[英]Parameter not set error in Prepared statement
我試圖在JDBC中執行准備好的語句,每次執行該語句時,都會收到錯誤消息“未設置參數”。 我已經反復嘗試檢查未設置的參數-但我只有一個。 這使我相信這是我自己的另一個愚蠢的錯誤。
如果您能向我指出這一點,我將非常感謝
public book search(String key){
book temp = null;
try {
String stmt = "SELECT BookID, Title, Author, Media, Available FROM BOOK WHERE Title LIKE ?;";
connection = DatabaseConnection();
PreparedStatement preparedStmt = connection.prepareStatement(stmt);
System.out.println(key);
preparedStmt.setObject(1, key);//the name
statement = connection.prepareStatement(stmt); //Using Prepared Statements prepare the query
resultSet = statement.executeQuery(); //Execute the query
while (resultSet.next()) {
int bookID = resultSet.getInt("BookID");//Get the userName
String title = resultSet.getString("Title"); //Get the score
String author = resultSet.getString("Author"); //Get the score
String media = resultSet.getString("Media"); //Get the score
boolean available = resultSet.getBoolean("Available"); //Get the score
temp = new book(title,author,media,available,bookID);
}
connection.close(); //close connection
} catch (SQLException e) {
System.err.println("Got an exception!");
System.err.println(e.getMessage());
}
return temp;
}
您要調用prepareStatement
兩次,在第一個參數上設置參數,然后在第二個參數上調用executeQuery
。
目前尚不清楚事件聲明statement
或resultSet
在哪里,但您需要:
PreparedStatement preparedStmt = connection.prepareStatement(stmt);
preparedStmt.setString(1, key);
ResultSet resultSet = preparedStmt.executeQuery();
請注意,我已經將resultSet
為局部變量-您真的不希望它成為字段...也沒有理由要使用temp
變量,因為您可以直接從while
循環中返回。 (我也將代碼更改為使用setString
而不是setObject
……)
您應該使用try-with-resources語句自動關閉該語句和結果集...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.