Fehlender IN-oder OUT-parameter auf index:: 1 Fehler in Java, Oracle
Hallo ich codiert ein Bibliotheks-Management-System in JSF 2.2 mit Netbeans 8.0.2 und Oracle 11g Express Edition. Ich hab mehrere Seiten mit dem Namen Books, Kreditnehmer usw. und einige Tabellen gleichen namens in der Datenbank. Mein problem ist Folgendes: in Kreditnehmer-Bildschirm Buch-ids angezeigt. Aber ich möchte erreichen, Buch-Titel, die die gleiche id. Hier ist mein 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;
}
wenn Zeile 22 geändert mit leihen.setBookid(rs.getString("BOOKID")); Die bookids angezeigt werden. Ich schrieb eine weitere Abfrage mit dem Namen BookidPs. wenn ich dieses Programm ausführen, ich bekomme Fehlender IN-oder OUT-parameter auf index:: 1-Fehler. Wenn Sie helfen, werde ich appretiate. Dank
InformationsquelleAutor Alp | 2014-12-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
"Fehlender IN-oder OUT-parameter" in der Fehlermeldung ist für den
?
in der Abfrage:Du hast nicht geben Sie einen Wert für es. Versuchen Sie es so:
Die Abfrage muss eine ISBN parameter, aber ich sehe nicht, wo haben Sie eine solche variable im code.
Um diese Abfrage zu verwenden, müssen Sie die fehlenden parameter. In der Tat, es scheint, dass diese zweite Abfrage ist nicht sinnvoll für Sie, überhaupt. Erhalten den code, ich sehe nicht, warum Sie wollen, um diese Abfrage zu verwenden, anstatt immer den Wert von
rs
.Aber eigentlich auch mit, dass parameter gefüllt, die query ist ungültiges SQL.
Ich denke, Sie wollen wahrscheinlich nur eine Abfrage, die einen JOIN.
Ihre zweite Abfrage scheint zu versuchen, wählen Sie die TITEL aus der BUCH-Tabelle.
Vielleicht möchten Sie diese Abfrage ohne Parameter:
?=?
ist falsch. Spaltennamen können nicht parametriert werden, dass Art und Weise. Sie können?
nur in der rechten Seite Ausdrücken.Weil ich zeigen möchte, Buch-Namen, entlehnt sind, in die Kreditnehmer Bildschirm. Ich habe versucht, BookidPs = con.prepareStatement("SELECT TITEL FROM BUCH UND KREDITNEHMER WHERE ISBN=?"); BookidPs.setString(1, bookid); gleiche Fehler mit der vorherigen.
In der Buch-Tabelle gibt es Buchtitel und Kreditnehmer-Tisch gibt es Buch-id-s, die wollten. Ich möchte erreichen, ISBN s so zu Buch-Namen mit Buch-id Kreditnehmer-Tabelle. Jetzt kann ich nur zeigen bookid im Kreditnehmer Bildschirm.
Vielen Dank, das ich sah. Dies half, dies ist die wahre Aussage, aber jetzt sollte ich noch hinzufügen das Ergebnis der Abfrage der Liste einen Eintrag namens " liste. Es Karies die Werte anzeigen, die Sie kennen. Wie kann ich es hinzufügen zu Liste
InformationsquelleAutor janos