热门搜索 :
考研考公
您的当前位置:首页正文

实验6

来源:东饰资讯网
实验6

一、相关知识点

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 searchProducts(String keyword) throws BaseException{

//要求返回名称中包含keyword关键字的所有产品,要求采用模糊查询方式

}

public List searchProducts(String keyword) throws BaseException{

List result = new ArrayList(); Connection conn = null; try {

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 loadTypeProductsCount()throws

//要求返回的map中,key为产品类型名称,value为这种类别产品的总库存量。

}

public static Map loadTypeProductsCount()throws BaseException{

//要求返回的map中,key为产品类型名称,value为这种类别产品的总库存量。 Map map=new HashMap();

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 loadProductNames(String typeName)throws BaseException{

//提取所有指定类型的产品名称 }

public Set loadProductNames(String typeName)throws BaseException{

//提取所有指定类型的产品名称 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 set = new HashSet(); String ProductName;

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 loadMaxCountProductInType()throws BaseException{

//要求返回的map中,key为产品名称,value为对应的产品类型名称。要求提取在每种产品类型中,库存量最多的产品名称。

}

public static Map loadMaxCountProductInType()throws BaseException{

//要求返回的map中,key为产品名称,value为对应的产品类型名称。要求提取在每种

Map map=new HashMap(); Connection conn=null; try {

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) {

因篇幅问题不能全部显示,请点此查看更多更全内容

Top