jjzjj

java - Missing IN or OUT parameter at index::1 java, Oracle 中的错误

coder 2024-03-26 原文

您好,我使用 Netbeans 8.0.2 和 Oracle 11g Express Edition 在 JSF 2.2 中编写了一个图书馆管理系统。我有几个名为 Books、Borrowers 等的页面和一些在数据库中命名为相同的表。我的问题是:在 Borrowers 屏幕中显示了图书 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

关于java - Missing IN or OUT parameter at index::1 java, Oracle 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27342697/

有关java - Missing IN or OUT parameter at index::1 java, Oracle 中的错误的更多相关文章

随机推荐