您好,我使用 Netbeans 8.0.2 和 Oracle 11g Express Edition 在 JSF 2.2 中编写了一个图书馆管理系统。我有几个名为“书籍”、“借阅者”等的页面,以及数据库中一些名为相同名称的表。我的问题是这样的:在借款人屏幕中显示图书 ID。但我想找到具有相同 id 的书名。这是我的代码。
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;
}
如果第 22 行更改为borrow.setBookid(rs.getString("BOOKID"));显示了 bookid。我编写了另一个名为 BookidPs 的查询。如果我运行这个程序,我会收到 Missing IN or OUT parameter at index:: 1 错误。如果您有帮助,我将不胜感激。谢谢
错误消息中的“缺少 IN 或 OUT 参数”适用于?
在查询中:
SELECT TITLE FROM BOOK AND BORROWER WHERE ISBN=?
你没有提供它的价值。尝试这样:
BookidPs = con.prepareStatement("SELECT TITLE FROM BOOK AND BORROWER WHERE ISBN=?");
BookidPs.setString(1, theIsbn);
该查询需要一个 ISBN 参数,但我没有看到代码中哪里有这样的变量。
要使用此查询,您需要提供缺少的参数。事实上,似乎第二个查询对您来说根本没有用。给定代码,我不明白为什么你想使用这个查询而不是从中获取值rs
.
但实际上,即使填充了该参数,查询也是无效的 SQL。
我认为您可能只需要一个查询,即 JOIN。
您的第二个查询似乎尝试从 BOOK 表中选择 TITLE。
所以也许您想要这个不带参数的查询:
SELECT * FROM BORROWER JOIN BOOK ON BORROWER.BOOKID = BOOK.BOOKID
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)