做的图书管理系统,在图书借阅那一块 出现如下错误:
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.IllegalArgumentException
java.sql.Date.valueOf(Unknown Source)
com.dao.BorrowDAO.insertBorrow(BorrowDAO.java:36)
com.action.Borrow.bookborrow(Borrow.java:122)
com.action.Borrow.execute(Borrow.java:30)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.20 logs.
--------------------------------------------------------------------------------Apache Tomcat/5.5.20
下面是borrowdao.java:
package com.dao;import com.core.ConnDB;
import java.util.*;
import com.actionForm.BorrowForm;
import java.sql.*;
import com.actionForm.ReaderForm;
import com.actionForm.BookForm;
import java.util.Date;public class BorrowDAO {
ConnDB conn = new ConnDB();
public int insert() {
String sql = "INSERT INTO tb_borrow (bookid) vlaues(1) ";
int ret = conn.executeUpdate(sql);
return ret;
}
//*****************************图书借阅******************************
public int insertBorrow(ReaderForm readerForm,BookForm bookForm,String operator){
//获取系统日期
Date dateU=new Date();
java.sql.Date date=new java.sql.Date(dateU.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;
try {
if (rs.next()) {
days = rs.getInt(1);
}
} catch (SQLException ex) {
}
//计算归还时间
String date_str=String.valueOf(date);
String dd = date_str.substring(8,10);
String DD = date_str.substring(0,8)+String.valueOf(Integer.parseInt(dd) + days);
java.sql.Date backTime= java.sql.Date.valueOf(DD);---36行
String sql ="Insert into tb_borrow (readerid,bookid,borrowTime,backTime,operator) values("+readerForm.getId()+","+bookForm.getId()+",'"+date+"','"+backTime+"','"+operator+"')";
int falg = conn.executeUpdate(sql);
System.out.println("添加图书借阅信息的SQL:" + sql);
conn.close();
return falg;
}
//*************************************图书继借*********************************
public int renew(int id){
String sql0="SELECT bookid FROM tb_borrow WHERE id="+id+"";
ResultSet rs1=conn.executeQuery(sql0);
int flag=0;
try {
if (rs1.next()) {
//获取系统日期
Date dateU = new Date();
java.sql.Date date = new java.sql.Date(dateU.getTime());
String sql1 = "select t.days from tb_bookinfo b left join tb_booktype t on b.typeid=t.id where b.id=" +
rs1.getInt(1) + "";
ResultSet rs = conn.executeQuery(sql1);
int days = 0;
try {
if (rs.next()) {
days = rs.getInt(1);
}
} catch (SQLException ex) {
}
//计算归还时间
String date_str = String.valueOf(date);
String dd = date_str.substring(8, 10);
String DD = date_str.substring(0, 8) +
String.valueOf(Integer.parseInt(dd) + days);
java.sql.Date backTime = java.sql.Date.valueOf(DD); String sql = "UPDATE tb_borrow SET backtime='" + backTime +
"' where id=" + id + "";
flag = conn.executeUpdate(sql);
}
} catch (Exception ex1) {}
conn.close();
return flag;
}弄了很久了,一直出错,求大大们帮帮忙了
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.IllegalArgumentException
java.sql.Date.valueOf(Unknown Source)
com.dao.BorrowDAO.insertBorrow(BorrowDAO.java:36)
com.action.Borrow.bookborrow(Borrow.java:122)
com.action.Borrow.execute(Borrow.java:30)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.20 logs.
--------------------------------------------------------------------------------Apache Tomcat/5.5.20
下面是borrowdao.java:
package com.dao;import com.core.ConnDB;
import java.util.*;
import com.actionForm.BorrowForm;
import java.sql.*;
import com.actionForm.ReaderForm;
import com.actionForm.BookForm;
import java.util.Date;public class BorrowDAO {
ConnDB conn = new ConnDB();
public int insert() {
String sql = "INSERT INTO tb_borrow (bookid) vlaues(1) ";
int ret = conn.executeUpdate(sql);
return ret;
}
//*****************************图书借阅******************************
public int insertBorrow(ReaderForm readerForm,BookForm bookForm,String operator){
//获取系统日期
Date dateU=new Date();
java.sql.Date date=new java.sql.Date(dateU.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;
try {
if (rs.next()) {
days = rs.getInt(1);
}
} catch (SQLException ex) {
}
//计算归还时间
String date_str=String.valueOf(date);
String dd = date_str.substring(8,10);
String DD = date_str.substring(0,8)+String.valueOf(Integer.parseInt(dd) + days);
java.sql.Date backTime= java.sql.Date.valueOf(DD);---36行
String sql ="Insert into tb_borrow (readerid,bookid,borrowTime,backTime,operator) values("+readerForm.getId()+","+bookForm.getId()+",'"+date+"','"+backTime+"','"+operator+"')";
int falg = conn.executeUpdate(sql);
System.out.println("添加图书借阅信息的SQL:" + sql);
conn.close();
return falg;
}
//*************************************图书继借*********************************
public int renew(int id){
String sql0="SELECT bookid FROM tb_borrow WHERE id="+id+"";
ResultSet rs1=conn.executeQuery(sql0);
int flag=0;
try {
if (rs1.next()) {
//获取系统日期
Date dateU = new Date();
java.sql.Date date = new java.sql.Date(dateU.getTime());
String sql1 = "select t.days from tb_bookinfo b left join tb_booktype t on b.typeid=t.id where b.id=" +
rs1.getInt(1) + "";
ResultSet rs = conn.executeQuery(sql1);
int days = 0;
try {
if (rs.next()) {
days = rs.getInt(1);
}
} catch (SQLException ex) {
}
//计算归还时间
String date_str = String.valueOf(date);
String dd = date_str.substring(8, 10);
String DD = date_str.substring(0, 8) +
String.valueOf(Integer.parseInt(dd) + days);
java.sql.Date backTime = java.sql.Date.valueOf(DD); String sql = "UPDATE tb_borrow SET backtime='" + backTime +
"' where id=" + id + "";
flag = conn.executeUpdate(sql);
}
} catch (Exception ex1) {}
conn.close();
return flag;
}弄了很久了,一直出错,求大大们帮帮忙了
这个是无法转换的
Integer.parseInt(dd) + days这个值为不合法的日期字符串。比如今天是2011-5-29 如果 days = 3的话, 这个表达式的值将为 2011-5-32
这个是无法转换的
Coder: Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
cal.add(Calendar.DAY_OF_MONTH, 3);//日期+3,如果需要后退,可以-3.具体的可看API
Date date1 = cal.getTime();
java.sql.Date backTime = new java.sql.Date(date1.getTime());
它这里面要传的参数是表示"yyyy-MM-dd"的形式日期字符串。
你看下你的参数是怎样的!以下是API的方法说明:
public static Date valueOf(String s)将 JDBC 日期转义形式的字符串转换成 Date 值。 参数:
s - 表示 "yyyy-mm-dd" 形式的日期的 String 对象
返回:
表示给定日期的 java.sql.Date 对象
抛出:
IllegalArgumentException - 如果给定日期不是 JDBC 日期转义形式 (yyyy-mm-dd)那么现在你就应该怎样改了!
虽然回复了迟了点,也分享下吧。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;
try {
if (rs.next()) {
days = rs.getInt(1);
}
} catch (SQLException ex) {
}这是楼主的部分代代码//在计算归还时间 这个标注上面。
首先:String sql1="select t.days from tb_bookinfo b left join tb_booktype t on b.typeid=t.id where b.id="+bookForm.getId()+"";
这条MySQL语句先是通过b.id(书的id)在bookinfo表中查询typeid(书的类型id).再通过typeid在表booktype中查询typeid对应的days参数的值,就是可借天数。
然后:days = rs.getInt(1);
这个语句是把booktype表中对应typeid第一列参数返回给rs结果集。而写这程序的人的意思是把第三列的参数days的值赋给days。
所以只要把1改成3,程序就可以了。
不知道为什么教程附带的源码会有这样的错误。