实验 JDBC基础(综合)

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验JDBC基础(综合)

一、相关知识点

1、JDBC基本概念

2、元数据

二、实验目的:

理解元数据的概念,利用jdbc完成复杂业务逻辑。

三、实验内容:

1、在booklib工程的DBUtil类中增加main函数,并在main函数中编写代码,列出

booklib数据库中所有表的名字。

提示:会用到如下代码片段,请自行测试resultset中那一列为表名

【实验结果与分析】

A、写出代码部分。

public static void main(String[] args) throws SQLException {

DatabaseMetaData dbmd = null;

Connection conn = null;

conn = DBUtil.getConnection();

dbmd = conn.getMetaData();

String types[] = {"VIEW","TABLE"};

ResultSet rs = dbmd.getTables(null, null, "%", types);

while(rs.next())

{

System.out.print(rs.getString("TABLE_NAME")+"\t");

}

2、在上述main函数中,增加代码,提取特定表中的字段信息,要求输出字段名字和数据类型。

提示:除了用课件中的方法,还可以用如下代码片段:

A、写出代码部分。

public static void main(String[] args) throws SQLException { DatabaseMetaData dbmd = null;

Connection conn = null;

conn = DBUtil.getConnection();

dbmd = conn.getMetaData();

//String types[] = {"VIEW","TABLE"};

ResultSet rs = dbmd.getColumns(null, "%", "beanbook","%");

while(rs.next())

{

System.out.print(rs.getString("COLUMN_NAME")+" ");

System.out.println(rs.getString("TYPE_NAME"));

}

}

3、在BookLendManager类中设计函数public void calPenal();完成如下功能:提取所有超期未归还的借阅记录,输出其读者id、图书条码、借阅时间、超期天数(假设用户仅能借阅30天,请自行将数据库表中的已有数据的借阅时间往前调);计算每条数据的罚金(罚金算法为超期30天内每天0.1元,31-60天每天0.15元,60天以上每天0.2元),并写入数据库表的penalSum字段中。函数编写完成后,通过main函数进行测试验证。

注:请注意事务控制

【实验结果与分析】

A、请提供程序代码。

public void calPenal() throws DbException {

List result=new ArrayList();

Connection conn=null;

try {

conn=DBUtil.getConnection();

String sql="select

readerid,bookBarcode,lendDate,TIMESTAMPDIFF(DAY,lendDate,now()) from BeanBookLendRecord where TIMESTAMPDIFF(DAY,lendDate,now())>30 and returndate is null";

java.sql.PreparedStatement pst=conn.prepareStatement(sql);

java.sql.ResultSet rs=pst.executeQuery();

while(rs.next()){

String readerid = rs.getString(1);

String bookBarcode = rs.getString(2);

java.sql.Date lendDate = (rs.getDate(3));

int days = rs.getInt(4)-30;

double penalSum = -1.0;

if(days<=30){

penalSum = 0.1*days;

}

else if(days>30 && days<=60){

penalSum = 0.15*(days-30)+3;

}

else if(days>60){

penalSum = 0.2*(days-60)+4.5+3;

}

System.out.println(readerid);

System.out.println(bookBarcode);

System.out.println(lendDate);

System.out.println(penalSum+"\n");

sql="update beanbooklendrecord set penalSum=? where readerid=? and bookBarcode=?";

java.sql.PreparedStatement pst2=conn.prepareStatement(sql);

pst2.setDouble(1, penalSum);

pst2.setString(2, readerid);

pst2.setString(3, bookBarcode);

相关文档
最新文档