日期:2014-05-17  浏览次数:20569 次

一个Java问题,本人菜鸟求解。
    本人刚自学Java不久,下面是参考某教程写的一个图书借阅管理系统的借阅功能的小块程序。

    功能描述:<书本已进行了分类>每类书都有自己可借天数,当书被借的时候,会先获取当前的时间做为借阅时间,然后 应归还时间=借阅时间+days<该变量为书本可借天数>。

    问题描述:已经在代码中注释。

public int insertBorrow(ReaderForm readerForm, BookForm bookForm,String operator) {
// 获取系统日期
Calendar cal = Calendar.getInstance();
Date date0 = cal.getTime();
java.sql.Date date = new java.sql.Date(date0.getTime());

// 查询该书本可借天数
String sql1 = "select t.days from tb_bookinfo b left join tb_booktype t on b.typeid=t.id where b.id="+ bookForm.getId() + "";
ResultSet rs = conn.executeQuery(sql1);
int days = 0;    //days的初始值
int flag = 0;    
try {
if (rs.next()) {
days = (int)rs.getInt(3);
                //表中的第三列便是书本的可借天数,假设该类的书的可借天书为30天。那days=30;
                  //问题出在这里,这里获取的days值传递不出去。       
                }
} catch (SQLException ex) {
}
//计算归还时间
cal.add(Calendar.DAY_OF_MONTH, days); 
        //不知道为什么,这里的days永远等于days的初始值,即days!=30而是days=0;
        Date date1 = cal.getTime();
java.sql.Date backTime = new java.sql.Date(date1.getTime());

String sql = "Insert into tb_borrow (readerid,bookid,borrowTime,backTime,operator) values("
+ readerForm.getId()
+ ","
+ bookForm.getId()
+ ",'"
+ date + "','" + backTime + "','" + operator + "')";
flag = conn.executeUpdate(sql);
System.out.println("添加图书借阅信息的SQL:" + sql);

conn.close();
return flag;
}


另外,假如我把下面这块代码也扔到try里面的话,同样也会有问题,flag这个值传递不出来了。即return flag;中的flag = 0;而这个flag变量的作用是判断是否借阅成功的依据。flag = 0;就表明借阅失败。


//计算归还时间
cal.add(Calendar.DAY_OF_MONTH, days); 
        //不知道为什么,这里的days永远等于days的初始值,即days!=30而是days=0;
        Date date1 = cal.getTime();
java.sql.Date backTime = new java.sql.Date(date1.getTime());

String sql = "Insert into tb_borrow (readerid,bookid,borrowTime,backTime,operator) values("
+ readerForm.getId()
+ ","
+ bookForm.getId()
+ ",'"
+ date + "','" + backTime + "','" + operator + "')";
flag = conn.executeUpdate(sql);
System.out.println("添加图书借阅信息的SQL:" + sql);



我也写了一个简单的测试代码,如下。这个代码却能成功的将值给传递出来。

package com.test;
public class Sb {
public static void main(String[] arg