Java中数据库的问题!请教 操作符丢失

[复制链接]
查看11 | 回复4 | 2008-10-20 10:47:07 | 显示全部楼层 |阅读模式
//addNew()方法,Int型的SQL语言可能有问题
public static void addNew(Bookclass aBook)throws DuplicateException{

bookID=aBook.getBookID();

bookIndex=aBook.getBookIndex();

bookName=aBook.getBookName();

bookISBN=aBook.getBookISBN();

bookAuthor=aBook.getBookAuthor();

bookConcern=aBook.getBookConcern();

leftNumOfBook=aBook.getLeftNumOfBook();

bookPrice=aBook.getBookPrice();

stateOfBook=aBook.getStateOfBook();

isNewBook=aBook.getIsNewBook();

everydayPenalty=aBook.getEverydayPenalty();

maxTimeOfBook=aBook.getMaxTimeOfBook();

publishDate=aBook.getPublishDate();

String sqlInsert="INSERT INTO Book"+

"(BookID,BookIndex,BookName,BookISBN,BookAuthor,BookConcern,"

+"LeftNumOfBook,BookPrice,StateOfBook,IsNewBook,EverydayPenalty,MaxTimeOfBook,PublishDate)"

+"VALUES('"+bookID+"','"+bookIndex+"','"+bookName+"','"+bookISBN+"','"

+bookAuthor+"','"+bookConcern+"','"+leftNumOfBook+"',"+bookPrice+"','"

+isNewBook+"','"+everydayPenalty+"','"+maxTimeOfBook+"','"+publishDate

+"')";

try{

Bookclass b=Bookclass.find(bookID);

throw(new DuplicateException("the same book is found"));

}

catch(NotFoundException e){

try{

int result=aStatement.executeUpdate(sqlInsert);

}

catch(SQLException ee){

System.out.println(ee);

}

}
}
测试时的main函数是
//main
public static void main(String[] args)
{
Bookclass aBook=new Bookclass("002","123","java","3-34-34","liang","huazhong","3","43.44","预订","true","0.5","40","2000-2-2");
Bookclass.initialize();
try{
aBook.addNew();
}
catch(DuplicateException e){
System.out.println(e);
}
Bookclass.terminate();
}
这是我写的一个类,是图书管理系统的一部分,可是编译测试时候说addNew的方法有问题,是数据库中的问题 编译结果为
C:\Documents and Settings\Administrator\桌面>java BookDA
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作
符丢失) 在查询表达式 '43.44','true','0.5','40','2000-2-2')' 中。
我这个类写的有点长 不能完全复制进来其他类没有问题就是这个类了 大家帮帮忙...
很急的。谢谢

回复

使用道具 举报

千问 | 2008-10-20 10:47:07 | 显示全部楼层
怎么把个SQL语句写那么长啊?怎么不用预编译的 PreparedStatement 那样SQL语句也不用写成那个样子把.建议你的SQL改下,按照你写的那眼该很容易出错String sql = "insert into 表名 values(?,?,?,?.....多少个字段多少个"?"号)".PreparedStatementpsta = Connection.prepareStatement(sql);psta.setString(那个对象名点字段).psta.set....(根据你的字段的类型).呵呵,给你点建议.而且的话,这种是能防SQL注入的...
回复

使用道具 举报

千问 | 2008-10-20 10:47:07 | 显示全部楼层
sql文改成这个就可以了 String sqlInsert="INSERT INTO Book"+ "(BookID,BookIndex,BookName,BookISBN,BookAuthor,BookConcern," +"LeftNumOfBook,BookPrice,StateOfBook,IsNewBook,EverydayPena...
回复

使用道具 举报

千问 | 2008-10-20 10:47:07 | 显示全部楼层
a...
回复

使用道具 举报

千问 | 2008-10-20 10:47:07 | 显示全部楼层
bookPrice前面少半个引号吧。。。或者说是后面多了半个引号。。。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行