Oracle,Oracle中索引:: 1错误时缺少IN或OUT参数 [英] Missing IN or OUT parameter at index:: 1 error in Java, Oracle

查看:406
本文介绍了Oracle,Oracle中索引:: 1错误时缺少IN或OUT参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好我使用Netbeans 8.0.2和Oracle 11g Express Edition在JSF 2.2中编写了一个库管理系统。我有几个名为Books,Borrowers等的页面和一些在数据库中命名相同的表。我的问题是:在Borrowers中显示屏幕书ID。但是我想要达到具有相同身份的书籍。这是我的代码。

Hi I coded a Library Management System in JSF 2.2 with using Netbeans 8.0.2 and Oracle 11g Express Edition. I have several pages named Books, Borrowers etc. and some tables named same in database. My problem is this: in Borrowers screen book ids are displayed. But I want to reach book's titles that have same id. Here is my code.

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)更改));显示了bookids。我写了另一个名为BookidPs的查询。如果我运行这个程序,我会在index :: 1错误时得到Missing IN或OUT参数。如果你帮忙,我会好意思。谢谢

if line 22 changed with borrow.setBookid(rs.getString("BOOKID")); The bookids are shown. I wrote another query named BookidPs. if I run this program I get Missing IN or OUT parameter at index:: 1 error. If you help I will appretiate. Thanks

推荐答案

错误消息中的缺少IN或OUT参数是针对在查询中:

The "Missing IN or OUT parameter" in the error message is for the ? in the query:


SELECT TITLE FROM BOOK AND BORROWER WHERE ISBN=?


您没有为它提供值。试试这样:

You didn't supply a value for it. Try like this:

BookidPs = con.prepareStatement("SELECT TITLE FROM BOOK AND BORROWER WHERE ISBN=?");
BookidPs.setString(1, theIsbn);

查询需要ISBN参数,但我看不到代码中有这样的变量。
要使用此查询,您需要提供缺少的参数。事实上,似乎第二个查询对你完全没用。鉴于代码,我不明白为什么要使用此查询而不是从 rs 获取值。

The query needs an ISBN parameter, but I don't see where you have such variable in your code. To use this query, you need to provide the missing parameter. In fact, it seems this second query is not useful for you at all. Given the code, I don't see why you want to use this query instead of getting the value from rs.

但实际上,即使填充了该参数,查询也是无效的SQL。

But actually, even with that parameter filled, the query is invalid SQL.

我想你可能只想要一个查询,一个JOIN。
你的第二个查询似乎试图从BOOK表中选择TITLE。
所以也许你想要这个查询,没有参数:

I think you probably want just one query, a JOIN. Your second query seems to try to select the TITLE from the BOOK table. So maybe you want this query, without parameters:

SELECT * FROM BORROWER JOIN BOOK ON BORROWER.BOOKID = BOOK.BOOKID

这篇关于Oracle,Oracle中索引:: 1错误时缺少IN或OUT参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆