引號問題、Parameter index out of range問題
引號問題
String?sql?=?"INSERT?INTO?bs_bookstore(storeName)?VALUES?("+"'?')";
為什么老師演示的過程中不加單引號也可以,我自己試了卻不行?
Parameter index out of range問題
public?void?addBookStore(BookStore?bs)?throws?Exception{ ????????Connection?conn?=?DBUtils.getConnection(); ????????String?sql?=?"INSERT?INTO?bs_bookstore(storeName)?VALUES?("+"'?')"; ????????PreparedStatement?psmt?=?conn.prepareStatement(sql); ????????//psmt.setInt(1,?bs.getMainId()); ????????psmt.setString(1,?bs.getStoreName()); ????????psmt.execute(); ???????? ????????System.out.println(sql); ????????System.out.println("------------------"+psmt.execute()+"------------------"); ???????? ????}
增加方法如上所示,測試方法如下所示
public?static?void?main(String[]?args)?{ ????????BookStore?bs?=?new?BookStore("test"); ????????BookStoreDao?bsd?=?new?BookStoreDao(); ????????try?{ ????????????bsd.addBookStore(bs); ????????}?catch?(Exception?e)?{ ????????????//?TODO?Auto-generated?catch?block ????????????e.printStackTrace(); ????????} ????}
控制臺報錯:
Parameter index out of range (1 > number of parameters, which is 0).
?? ?at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
?? ?at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
?? ?at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
?? ?at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929)
?? ?at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3700)
?? ?at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3684)
?? ?at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4535)
?? ?at com.cjt.dao.BookStoreDao.addBookStore(BookStoreDao.java:21)
?? ?at com.test.Test.main(Test.java:13)
是說psmt.setString(1, bs.getStoreName())這一行有錯嗎?有啥錯?????求教。。。。。
PS:我設(shè)置了主鍵mainId自增
2015-05-08
String?sql?=?"INSERT?INTO?bs_bookstore(storeName)?VALUES?(?)";
寫成這樣試試,就是不加單引號的。