java项目实战-超市管理系统(七)如何导入数据到数据库?Dao包源码与分析

package duan.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import duan.db.DbClose;
import duan.db.DbConn;
import duan.entity.Goods;
import duan.tools.ScannerChoice;

import java.sql.DriverManager;
import java.sql.Statement;

/**
 * 数据库goods表操作
 * @author duan
 */
public final class GoodsDao 
{
		Connection        conn  = null;
		PreparedStatement pstmt = null;
		ResultSet 		  rs    = null;
		
	
	/**
	 * 1.添加商品到数据库goods表
	 * @param goods 商品对象
	 * @return boolean
	 */
	public boolean addGoods(Goods goods)
	{
		boolean bool = false;
		conn = DbConn.getconn();
		String sql = "INSERT INTO GOODS(gid,GNAME,GPRICE,GNUM) VALUES(?,?,?,?)";
			
			try
			{
				pstmt = conn.prepareStatement(sql);
				pstmt.setInt(1,goods.getGid());
				pstmt.setString(2,goods.getGname());
				pstmt.setDouble(3,goods.getGprice());
				pstmt.setInt(4,goods.getGnum());
				
				int rs = pstmt.executeUpdate();
				if (rs > 0)
				{
					bool = true;
				}
			} catch (SQLException e)
			{
				e.printStackTrace();
			}finally
					{
						DbClose.addClose(pstmt,conn);
					}
	 return bool;
	}

	/**
	 * 2.更改商品信息到数据库goods表
	 * @param key   选择要更改商品信息
	 * @param goods 商品对象
	 * @return boolean
	 */
	public boolean updateGoods(int key,Goods goods)
	{
		boolean bool = false;
		conn = DbConn.getconn();
			switch (key)
			{
			case 1:		//	key=1,更改商品名称
						String sqlName = "UPDATE GOODS SET GNAME=? WHERE GID=?";
						
					    try
						{
							pstmt = conn.prepareStatement(sqlName);
							pstmt.setString(1, goods.getGname());
							pstmt.setInt(2,goods.getGid());
							
							int rs = pstmt.executeUpdate();
							if (rs > 0)
							{
								bool = true;
							}
						} catch (SQLException e)
						{
							e.printStackTrace();
						}finally{
									DbClose.addClose(pstmt,conn);
								}
				break;
			case 2:		//	key=2,更改商品价格
						String sqlPrice = "UPDATE GOODS SET GPRICE=? WHERE GID=?";
						
						try
						{
							pstmt = conn.prepareStatement(sqlPrice);
							pstmt.setDouble(1, goods.getGprice());
							pstmt.setInt(2,goods.getGid());
							
							int rs = pstmt.executeUpdate();
							if (rs > 0)
							{
								bool = true;
							}
						} catch (SQLException e)
						{
							e.printStackTrace();
						}finally{
									DbClose.addClose(pstmt,conn);
								}
				break;
			case 3:		//	key=3,更改商品数量
						String sqlNum = "UPDATE GOODS SET GNUM=? WHERE GID=?";
							
						try
						{
							pstmt = conn.prepareStatement(sqlNum);
							pstmt.setInt(1, goods.getGnum());
							pstmt.setInt(2,goods.getGid());
							
							int rs = pstmt.executeUpdate();
							if (rs > 0)
							{
								bool = true;
							}
						} catch (SQLException e)
						{
							e.printStackTrace();
						}finally{
									DbClose.addClose(pstmt,conn);
								}
				break;
			default:
				break;
			}
		return bool;
	}
	
	/**
	 * 3.从数据库goods表中-刪除商品
	 * @param gid 商品编号
	 * @return boolean
	 */
	public boolean deleteGoods(int gid)
	{
		boolean bool = false;
		conn = DbConn.getconn();
		String sql = "DELETE FROM GOODS WHERE GID=?";
		
			try
			{
				pstmt = conn.prepareStatement(sql);
				pstmt.setInt(1,gid);
				int rs = pstmt.executeUpdate();
				if (rs > 0)
				{
					bool = true;
				}
			} catch (SQLException e)
			{
				e.printStackTrace();
			}finally{
						DbClose.addClose(pstmt,conn);
					}
		return bool;
	}
	
	/**
	 *4.查询商品信息
	 * @param key 查询方式
	 * @return ArrayList<Goods>
	 */
	public ArrayList<Goods> queryGoods(int key) 
	{										
		ArrayList<Goods> goodsList = new ArrayList<Goods>();
		conn = DbConn.getconn();	

		switch (key)
		{
			case 1:
					//	key=1商品 数量 升序查询
					String sqlGnum = "SELECT * FROM GOODS ORDER BY GNUM ASC";
					try
					{
						pstmt = conn.prepareStatement(sqlGnum);
						rs = pstmt.executeQuery();
						while (rs.next())
						{
							int gid = rs.getInt("gid");
							String gname = rs.getString(2);
							double gprice = rs.getDouble(3);
							int gnum = rs.getInt(4);
							
							Goods goods = new Goods(gid,gname,gprice,gnum);
							goodsList.add(goods);
						}
					} catch (SQLException e)
					{
						e.printStackTrace();
					}finally
							{
								DbClose.queryClose(pstmt, rs, conn);
							}
				break;
			case 2:
				 	//	key=2商品 价格 升序查询
					String sqlGprice = "SELECT * FROM GOODS ORDER BY GPRICE ASC";
					try
					{
						pstmt = conn.prepareStatement(sqlGprice);
						rs = pstmt.executeQuery();
						while (rs.next())
						{
							int gid = rs.getInt("gid");
							String gname = rs.getString(2);
							double gprice = rs.getDouble(3);
							int gnum = rs.getInt(4);
							
							Goods goods = new Goods(gid,gname,gprice,gnum);
							goodsList.add(goods);
						}
					} catch (SQLException e)
					{
						e.printStackTrace();
					}finally
							{
								DbClose.queryClose(pstmt, rs, conn);
							}
				break;
			case 3:
					//	key=3商品 关键字 查询
					String nameGet = ScannerChoice.ScannerInfoString();
					String sqlGname = "SELECT * FROM GOODS WHERE GNAME=?";
					try
					{
						pstmt = conn.prepareStatement(sqlGname);
						pstmt.setString(1, nameGet);
						rs = pstmt.executeQuery();
						while (rs.next())
						{
							int gid = rs.getInt("gid");
							String gname = rs.getString(2);
							double gprice = rs.getDouble(3);
							int gnum = rs.getInt(4);
							
							Goods goods = new Goods(gid,gname,gprice,gnum);
							goodsList.add(goods);
						}
					} catch (SQLException e)
					{
						e.printStackTrace();
					}finally
					{
						DbClose.queryClose(pstmt, rs, conn);
					}
					break;
			default:
				break;
		}
		return goodsList;
	}

	/**
	 *5.显示所有商品信息
	 * @return ArrayList<Goods>
	 */
	public ArrayList<Goods> displayGoods()
	{
		ArrayList<Goods> goodsList = new ArrayList<Goods>(); 
		conn = DbConn.getconn();
		String sql = "SELECT * FROM GOODS";
		
		try
		{
			pstmt = conn.prepareStatement(sql);
			rs 	  = pstmt.executeQuery();
				
				while (rs.next())
				{
					int gid = rs.getInt(1);
					String gname = rs.getString(2);
					double gprice = rs.getDouble("gprice"); 		//双引号+主键名,也可用数字表示.
					int gnum = rs.getInt(4);
					
					Goods goods = new Goods(gid,gname,gprice,gnum);	//创建Goods对象,并赋值.
					goodsList.add(goods);							//添加信息到动态数组中.
				}
		} catch (SQLException e)
		{
			e.printStackTrace();
		}finally
				{
					DbClose.queryClose(pstmt, rs, conn);
				}
		return goodsList;
		
	}
		
}
package duan.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import duan.db.DbClose;
import duan.db.DbConn;
import duan.entity.Gsales;

/**
 * 数据库gSales表操作
 * @author duan
 */
public final class GsalesDao
{
	
	Connection        conn  = null;
	PreparedStatement pstmt = null;
	ResultSet 		  rs    = null;
	
	/**
	 * 1.当天卖出的商品
	 * @return ArrayList<Gsales> 商品信息,包括 allSum (单种商品的销售总和)
	 */
	public ArrayList<Gsales> dailyGsales()
	{
		ArrayList<Gsales> GsalesList = new ArrayList<Gsales>(); 
		conn = DbConn.getconn();
		String sql = "select* from gsales left join goods using(gid) where sdate=?";
		try
		{
			pstmt = conn.prepareStatement(sql);
			pstmt.setDate(1, new java.sql.Date(new Date().getTime()));
			rs 	  = pstmt.executeQuery();
			while (rs.next())
			{	
				String gName = rs.getString(6);
				double gPrice = rs.getDouble(7);
				int gNum = rs.getInt(8);
				
				Gsales Gsales = new Gsales(gName,gPrice,gNum);
				GsalesList.add(Gsales);						
			}
		} catch (SQLException e)
		{
			e.printStackTrace();
		}finally
				{
					DbClose.queryClose(pstmt,rs,conn);
				}
		return GsalesList;
	}
	
	/**
	 *2.购物结算-向sales表中插入商品数据!
	 *@param gSales 售卖商品对象
	 *@return boolean
	 */
	public boolean shoppingSettlement(Gsales gSales)
	{
		boolean bool = false;
		conn = DbConn.getconn();
		String sql = "INSERT INTO GSALES(gsid,GID,SID,sdate,SNUM) VALUES(?,?,?,?,?)";
		
		try
		{
			pstmt = conn.prepareStatement(sql);
			pstmt.setInt(1,gSales.getGsid());
			pstmt.setInt(2,gSales.getGId());  
			pstmt.setDate(4, new java.sql.Date(new Date().getTime()));
			pstmt.setInt(3,gSales.getSId());
			pstmt.setInt(5,gSales.getSNum());
			
			int rs = pstmt.executeUpdate();
			if (rs > 0)
			{
				bool = true;
			}
		} catch (SQLException e)
		{
			e.printStackTrace();
		}finally
		{
			DbClose.addClose(pstmt,conn);
		}
		return bool;
	}
	
}

package duan.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import duan.db.DbClose;
import duan.db.DbConn;
import duan.entity.SalesMan;

/**
 * 数据库SalesMan表操作
 * @author duan
 */
public final class SalesManDao
{
	 Connection        conn  = null;
	 PreparedStatement pstmt = null;
	 ResultSet 		rs 	 	 = null;
	
	/**
	 * 1.前台收银登陆
	 * @param sName 用户名
	 * @return ArrayList<SalesMan> sPassWord,sId
	 */
 	public ArrayList<SalesMan> checkstandLog(String sName)
	{
 		ArrayList<SalesMan> salesManInfo = new ArrayList<SalesMan>();
		conn = DbConn.getconn();
		String sql = "SELECT SID,SPASSWORD FROM SALESMAN WHERE SNAME=?";
				try
				{
					pstmt = conn.prepareStatement(sql);
					pstmt.setString(1,sName);
					
					rs 	  = pstmt.executeQuery();
					while (rs.next())
					{
						String sPassWord = rs.getString("spassword");
						int sId = rs.getInt("sId");
						SalesMan salesMan = new SalesMan(sId,sPassWord); 
						salesManInfo.add(salesMan);						
					}
				} catch (SQLException e1)
				{
					e1.printStackTrace();
				}finally
				{
					DbClose.queryClose(pstmt, rs, conn);
				}
	 return salesManInfo;
	}

 	/**
	 * 2.添加售货员
	 * @param sName 用户名
	 * @return boolean
	 */
		public boolean addSalesMan(SalesMan sName)
		{
			boolean bool = false;
			conn = DbConn.getconn();
			String sql = "INSERT INTO SALESMAN(sid,SNAME,SPASSWORD) VALUES(?,?,?)";
				
				try
				{
					pstmt = conn.prepareStatement(sql);
					pstmt.setInt(1,sName.getSId());
					pstmt.setString(2,sName.getSName());
					pstmt.setString(3,sName.getSPassWord());
					
					int rs = pstmt.executeUpdate();
					if (rs > 0)
					{
						bool = true;
					}
				} catch (SQLException e)
				{
					e.printStackTrace();
				}finally
						{
							DbClose.addClose(pstmt,conn);
						}
		return bool;
		}
	
	/**
	 * 3.更改售货员信息
	 * @param key 	要更改项
	 * @param sName 用户名
	 * @return boolean
	 */
	public  boolean updateSalesMan(int key,SalesMan sName)
	{
		
		boolean bool = false;
		conn = DbConn.getconn();
			switch (key)
			{
			case 1:		//	3.1 更改售货员姓名
						String sqlName = "UPDATE SALESMAN SET SNAME=? WHERE SID=?";
						
						try
					{
						pstmt = conn.prepareStatement(sqlName);
						pstmt.setString(1, sName.getSName());
						pstmt.setInt(2,sName.getSId());
						
						int rs = pstmt.executeUpdate();
						if (rs > 0)
						{
							bool = true;
						}
					} catch (SQLException e)
					{
						e.printStackTrace();
					}finally{
								DbClose.addClose(pstmt,conn);
							}
				break;
			case 2:		//	3.2 更改售货员密码
						String sqlPrice = "UPDATE SALESMAN SET SPASSWORD=? WHERE SID=?";
						
						try
					{
						pstmt = conn.prepareStatement(sqlPrice);
						pstmt.setString(1,sName.getSPassWord());
						pstmt.setInt(2, sName.getSId());
						
						int rs = pstmt.executeUpdate();
						if (rs > 0)
						{
							bool = true;
						}
					} catch (SQLException e)
					{
						e.printStackTrace();
					}finally{
								DbClose.addClose(pstmt,conn);
							}
				break;
			default:
				break;
			}
		return bool;
	}

	/**
	 * 4.删除售货员
	 * @param sName 用户名
	 * @return boolean
	 */
	public boolean deleteSalesMan(String sName)
	{
		boolean bool = false;
		conn = DbConn.getconn();
		String sql = "DELETE FROM SALESMAN WHERE SNAME=?";
		try
		{
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1,sName);
			int rs = pstmt.executeUpdate();
			if (rs > 0)
			{
				bool = true;
			}
		} catch (SQLException e)
		{
			e.printStackTrace();
		}finally{
					DbClose.addClose(pstmt,conn);
				}
	 return bool;
	}
	
	/**
	 * 5.模糊查询售货员
	 * @param sName 用户名
	 * @return ArrayList<SalesMan>
	 */
	public ArrayList<SalesMan> querySalesMan(String sName)
	{
		ArrayList<SalesMan> SalesManList = new ArrayList<SalesMan>();
		conn = DbConn.getconn();	
	
		sName = "%"+sName+"%";	//从用户处获取的字符串加上 % 符号,来达到模糊查询的目的.字符串 的连接还有更优秀的方式,待优化代码!
		String sql = "SELECT * FROM SALESMAN WHERE SNAME LIKE ?";  //居然不能直接跟 % .只能用连接字符串的方式
		   try
		   {
				pstmt = conn.prepareStatement(sql);
				pstmt.setString(1, sName);
				rs = pstmt.executeQuery();
				while (rs.next())
				{
					int sid = rs.getInt("sid");
					String sname = rs.getString(3);
					String sPassWord = rs.getString(2);
					
					SalesMan salesMan = new SalesMan(sid,sname,sPassWord);
					SalesManList.add(salesMan);
				}
			} catch (SQLException e)
			{
				e.printStackTrace();
			}finally
					{
						DbClose.queryClose(pstmt, rs, conn);
					}
		return SalesManList;
	}
	
	/**
	 * 6.显示所有售货员
	 * @return ArrayList<SalesMan>
	 */
	public  ArrayList<SalesMan> displaySalesMan()
	{
		ArrayList<SalesMan> salesManList = new ArrayList<SalesMan>();
		conn = DbConn.getconn(); 
		String sql = "SELECT * FROM SALESMAN";
		
		try
		{
			pstmt = conn.prepareStatement(sql);
			rs =  pstmt.executeQuery();
			while (rs.next())
			{
				int sId = rs.getInt(1);
				String sName = rs.getString(3);
				String sSpassWord = rs.getString(2);
				
				SalesMan salesMan = new SalesMan(sId,sName,sSpassWord);
				salesManList.add(salesMan);
			}
		} catch (SQLException e)
		{
			e.printStackTrace();
		}finally
				{
					DbClose.queryClose(pstmt, rs, conn);
				}
	 return salesManList;
	}
	
}

1.向数据库发送sql语句的经典调用顺序

conn = DbConn.getconn();
String sql = "INSERT INTO GOODS(gid,GNAME,GPRICE,GNUM) VALUES(?,?,?,?)";
pstmt = conn.prepareStatement(sql);
int rs = pstmt.executeUpdate();

2.查询语句的经典调用顺序

conn = DbConn.getconn();
String sqlGnum = "SELECT * FROM GOODS ORDER BY GNUM ASC"
pstmt = conn.prepareStatement(sqlGnum)
rs = pstmt.executeQuery()
while (rs.next()){String str = rs.getString(column);}	

3.sql语句的书写有两种方法,一种是直接用string“”+“”+“”的方法,另一种是带参数的,用?代替参数,然后用pstmt.setString(1,sth)来设置。

4.调用完连接后,要用Dbcolse相关方法关闭不用的资源,因为mysql中连接有上线,数据量大的时候不关闭连接会拖慢速度。

5.数据库中最基本的增删改查语法

增:INSERT INTO GOODS(gid,GNAME,GPRICE,GNUM) VALUES(?,?,?,?)
删:DELETE FROM GOODS WHERE GID=?
改:UPDATE GOODS SET GPRICE=? WHERE GID=?
查:SELECT * FROM GOODS ORDER BY GNUM ASC
SELECT * FROM GOODS WHERE GNAME=?

6.数据库中连接表的操作,添加日期

select* from gsales left join goods using(gid) where sdate=?

详细用法见博文数据库基础(四)表的内连接,外连接,左连接,右连接的区别、日期的传递

7.日期的添加

pstmt.setDate(1, new java.sql.Date(new Date().getTime()));


猜你喜欢

转载自blog.csdn.net/duan_2018/article/details/79704461
今日推荐