一、相关知识点
1、JDBC基本概念
2、对象封装、java集合框架等
二、实验目的:
理解OR映射基本概念,理解集合框架的使用。
三、实验内容:
已知表结构如下: Products 产品信息表 序号 1 2 3 7 列名 ProductID ProductName productType UnitsInStock 数据类型 int nvarchar Nvarchar int 4 80 80 2 长度 0 0 0 0 小数位 √ 主键 字段说明 产品编号 产品名称 产品类型 库存 建表和数据初始化的语句如下:
CREATE TABLE Products ( );
Insert into Products values(1,'产品11','类型1',100); Insert into Products values(2,'产品12','类型1',94); Insert into Products values(3,'产品13','类型1',10); Insert into Products values(4,'产品14','类型1',110); Insert into Products values(5,'产品15','类型1',105); Insert into Products values(6,'产品16','类型1',109); Insert into Products values(7,'产品17','类型1',118); Insert into Products values(8,'产品18','类型1',1118); Insert into Products values(9,'产品19','类型1',190);
Insert into Products values(11,'产品21','类型2',100); Insert into Products values(12,'产品22','类型2',94); Insert into Products values(13,'产品23','类型2',10); Insert into Products values(14,'产品24','类型2',110);
ProductID int NOT NULL primary key, ProductName varchar (40) NOT NULL , ProductType varchar (40) NOT NULL , UnitsInStock int NULL
Insert into Products values(15,'产品25','类型2',105);
1、 在booklib工程中增加BeanProduct类,将上述表结构封装为javabean。请给出
javabean代码。
package cn.edu.zucc.booklib.model;
public class BeanProduct {
private int ProductID; private String ProductName; private String ProductType; private int UnitsInStock;
public int getProductID() { }
public void setProductID(int productID) { }
public String getProductName() { }
public void setProductName(String productName) { }
public String getProductType() { }
public void setProductType(String productType) { }
public int getUnitsInStock() { }
public void setUnitsInStock(int unitsInStock) { } }
UnitsInStock = unitsInStock; return UnitsInStock; ProductType = productType; return ProductType; ProductName = productName; return ProductName; ProductID = productID; return ProductID;
2、 在booklib工程增加ProductManager类中编写三个函数,并在main函数中进行测试,
在实验报告中将代码补上:
public BeanProduct loadProductsById(int productId) throws
BaseException{
//要求根据productId返回封装好的产品信息 }
public static BeanProduct loadProductsById(int productID) throws BaseException, SQLException{
Connection conn = null; conn=DBUtil.getConnection(); BeanProduct p = new BeanProduct();
try{
String sql = \"Select
+ \"From Products\"
+ \"Where ProductId= '\"+productID+\"'\";
ProductID,ProductName,ProductType,UnitsInStock\"
java.sql.PreparedStatement pst = conn.prepareStatement(sql); java.sql.ResultSet rs = pst.executeQuery(); if(rs.next()) { }
pst.close(); rs.close();
}catch (SQLException e) { } finally{ }
return p; }
if(conn!=null)
try { }
conn.close();
// TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); throw new DbException(e);
p.setProductID(rs.getInt(1)); p.setProductName(rs.getString(2)); p.setProductType(rs.getString(3)); p.setUnitsInStock(rs.getInt(4));
2
public List //要求返回名称中包含keyword关键字的所有产品,要求采用模糊查询方式 } public List List conn = DBUtil.getConnection(); String sql = \"Select *\" + \"From BeanProduct\" + \"Where ProductName Like '\"+keyword+\"'\"; java.sql.PreparedStatement pst = conn.prepareStatement(sql); java.sql.ResultSet rs = pst.executeQuery(); while(rs.next()) { BeanProduct p = new BeanProduct(); p.setProductID(rs.getInt(1)); p.setProductName(rs.getString(2)); p.setProductType(rs.getString(3)); p.setUnitsInStock(rs.getInt(4)); result.add(p); } pst.close(); rs.close(); } finally{ if(conn!=null) e.printStackTrace(); throw new DbException(e); }catch (SQLException e) { } } try { } conn.close(); // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { return result; public void addProduct(BeanProduct p)throws BaseException{ //将p参数对应的产品信息加入数据库 } public void addProduct(BeanProduct p)throws BaseException{ Connection conn = null; try { conn = DBUtil.getConnection(); String sql = \"insert Into BeanProduct\" + \"values(?,?,?,?)\"; java.sql.PreparedStatement pst = conn.prepareStatement(sql); pst.setInt(1, p.getProductID()); pst.setString(2, p.getProductName()); pst.setString(3, p.getProductType()); pst.setInt(4, p.getUnitsInStock()); pst.close(); }catch (SQLException e) { } e.printStackTrace(); throw new DbException(e); finally{ if(conn!=null) } try { } conn.close(); // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { 3、在ProductManager类中增加四个函数,并在main函数中进行测试,在实验报告中将代码补上: public BaseException{ Map //要求返回的map中,key为产品类型名称,value为这种类别产品的总库存量。 } public static Map //要求返回的map中,key为产品类型名称,value为这种类别产品的总库存量。 Map Connection conn=null; try { } finally{ } return map; } if(conn!=null) try { } conn.close(); // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { conn=DBUtil.getConnection(); String s1=\"select ProductType from products\"; java.sql.PreparedStatement p1=conn.prepareStatement(s1); java.sql.ResultSet r1=p1.executeQuery(); int all=0; while(r1.next()) { } p1.close(); r1.close(); e.printStackTrace(); throw new DbException(e); String s2=\"select UnitsInStock from products where ProductType java.sql.PreparedStatement p2=conn.prepareStatement(s2); java.sql.ResultSet r2=p2.executeQuery(); while(r2.next()) all+=r2.getInt(1); map.put(r1.getString(1), all); = '\"+r1.getString(1)+\"'\"; } catch (SQLException e) { public Set //提取所有指定类型的产品名称 } public Set //提取所有指定类型的产品名称 Connection conn = null; int ProductType; try{ conn=DBUtil.getConnection(); String sql = \"Select ProductName\" + \"From BeanProduct\" + \"Where ProductTyoe= '\"+typeName+\"'\"; java.sql.PreparedStatement pst = conn.prepareStatement(sql); java.sql.ResultSet rs = pst.executeQuery(); while(rs.next()) { Set ProductName = rs.getString(1); set.add(ProductName); } pst.close(); rs.close(); }catch (SQLException e) { } finally{ } return null ; } if(conn!=null) try { } conn.close(); // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); throw new DbException(e); public int loadProductCount(String typeName)throws BaseException{ //提取指定产品类别的产品种类数(非库存量) } public int loadProductCount(String typeName)throws BaseException{ //提取指定产品类别的产品种类数(非库存量) Connection conn = null; int ProductType = 0; try{ conn=DBUtil.getConnection(); String sql = \"Select ProductType\" + \"From BeanProduct\" + \"Where ProductTyoe= '\"+typeName+\"'\"; java.sql.PreparedStatement pst = conn.prepareStatement(sql); java.sql.ResultSet rs = pst.executeQuery(); if(rs.next()) { ProductType = rs.getInt(1); } pst.close(); rs.close(); }catch (SQLException e) { } finally{ e.printStackTrace(); throw new DbException(e); } if(conn!=null) try { } conn.close(); // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { return ProductType; } public Map //要求返回的map中,key为产品名称,value为对应的产品类型名称。要求提取在每种产品类型中,库存量最多的产品名称。 } public static Map //要求返回的map中,key为产品名称,value为对应的产品类型名称。要求提取在每种 Map conn=DBUtil.getConnection(); String s1=\"select DISTINCT ProductType from products \"; java.sql.PreparedStatement p1=conn.prepareStatement(s1); java.sql.ResultSet r1=p1.executeQuery(); while(r1.next()) { 产品类型中,库存量最多的产品名称。 } } } String s2=\"select ProductName,UnitsInStock from products where java.sql.PreparedStatement p2=conn.prepareStatement(s2); java.sql.ResultSet r2=p2.executeQuery(); int max=0; while(r2.next()){ } if(r2.getInt(2)>max) { } max=r2.getInt(2); map.put(r1.getString(1),r2.getString(1)); ProductType = '\"+r1.getString(1)+\"'\"; p1.close(); r1.close(); e.printStackTrace(); throw new DbException(e); } catch (SQLException e) { finally{ } return map; if(conn!=null) try { } conn.close(); // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { 因篇幅问题不能全部显示,请点此查看更多更全内容