您好我使用Netbeans 8.0.2和Oracle 11g Express Edition在JSF 2.2中編寫圖書館管理系統。我有幾個名爲Books,Borrowers等的頁面和一些在數據庫中名稱相同的表。我的問題是這樣的:在借用者屏幕上顯示書籍ID。但我想要達到具有相同標識的圖書標題。這是我的代碼。在Java,索引:: 1錯誤缺少IN或OUT參數
public List<Borrower> getBorrowers()throws ClassNotFoundException,SQLException, InstantiationException, IllegalAccessException{
Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","Alparslan-PC","123456");
ps=con.prepareStatement("SELECT * FROM BORROWER");
BookidPs = con.prepareStatement("SELECT TITLE FROM BOOK AND BORROWER WHERE ISBN=?");
ResultSet rs=ps.executeQuery();
ResultSet Rs2=BookidPs.executeQuery();
List<Borrower> liste = new ArrayList<Borrower>();
while(rs.next()){
Borrower borrow = new Borrower();
borrow.setId(rs.getBigDecimal("ID"));
borrow.setName(rs.getString("NAME"));
borrow.setSurname(rs.getString("SURNAME"));
borrow.setAddress(rs.getString("ADDRESS"));
borrow.setPhonenumber(rs.getString("PHONENUMBER"));
borrow.setBorrowdate(rs.getString("BORROWDATE"));
//book.setIsbn(rs.getString("BOOKID"))
borrow.setBookid(Rs2.getString("BOOKID"));
//borrow.setBookid(((Book) rs.getObject("BOOKID")).getIsbn());
liste.add(borrow);
}
System.out.print(liste);
return liste;
}
if line 22 changed with borrow.setBookid(rs.getString(「BOOKID」));顯示書目。我寫了另一個名爲BookidPs的查詢。如果我運行這個程序,我會在index :: 1錯誤處得到Missing IN或OUT參數。如果你幫忙,我會很滿意。由於
感謝您的關注。我用這種方式寫了 'BookidPs = con.prepareStatement(「SELECT TITLE FROM BOOK AND BORROWER WHERE?=?」); BookidPs.setString(1,book.getIsbn()); BookidPs.setString(2,bookid);' 但在這段時間我得到HTTP狀態500 - ORA-00933:SQL命令沒有正確結束的錯誤。如果這種方式效率不高,請告訴我如何實現這個問題。如何使用書籍ID打印書名。 – Alp 2014-12-07 13:05:37
'?=?'不正確。列名不能以這種方式參數化。只能在右側表達式中使用'?'。 – janos 2014-12-07 13:08:45
因爲我想顯示借用者屏幕中借用的圖書名稱。我試過 BookidPs = con.prepareStatement(「SELECT TITLE FROM BOOK AND BORROWER WHERE ISBN =?」); BookidPs.setString(1,bookid);與前一個相同的錯誤。 – Alp 2014-12-07 13:16:39