Ich versuche also, Daten aus einer DB abzurufen. Vielleicht habe ich es zu sehr angeschaut, aber ich kann das Problem nicht finden.Vorbereitete Anweisung SQL-Ausnahme "Keine Eingabeparameter"
Verbindung ist in Ordnung, Anweisung ist in Ordnung (funktioniert mit statischen Daten), und Daten vom Objekt Item
sind korrekt.
Es sagt mir, es gibt keine Eingabeparameter für die Aussage. Die Ausnahme wird in der getSelectPrepareStatement()
-Methode ausgelöst. Der Code ist:
public Result[] getItemsFromInput(Item item) throws SQLException {
PreparedStatement statement;
ArrayList<Result> results = new ArrayList<Result>();
String query = "SELECT Code1, Name, A.Code2 " +
"FROM ItemTable A " +
"INNER JOIN CategoryTable B " +
"ON A.CatCode = B.CatCode" +
"AND B.ID LIKE '?'";
statement = getSelectPrepareStatement(query, item.getTail().getId()+"%");
...
rs = queryForResultSet(statement);
while(rs.next()) {
results.add(new Result(
rs.getString("ItemName"),
rs.getInt("ItemCode"),
rs.getString("ClassCode")));
}
return results.toArray(new Result[results.size()]);
}
Abrufen der PreparedStatement mit Satz Werte hier:
private PreparedStatement getSelectPrepareStatement(String SQL, String data) throws SQLException {
PreparedStatement pStmt = conn.prepareStatement(SQL);
pStmt.setString(1, data);
return pStmt;
}
Die eexception auf den Anruf zu pStmt.setString(1, data);
geworfen wird, obwohl ich die Aussage gesetzt ein Paramenter zu haben.
Der Fehler ist:
java.sql.SQLException: No input parameters.
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedResultSet.noStateChangeException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement.setString(Unknown Source)
at connection.Communicator.getSelectPrepareStatement(Communicator.java:306)
at connection.Communicator.getItemsFromInput(Communicator.java:56)
at frame.PromotionsDialog$1.propertyChange(PromotionsDialog.java:126)
at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:328)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:303)
at java.awt.Component.firePropertyChange(Component.java:8402)
at javax.swing.JComponent.firePropertyChange(JComponent.java:4494)
at frame.DataPanel$1.actionPerformed(DataPanel.java:130)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:702)
at java.awt.EventQueue$4.run(EventQueue.java:700)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.sql.SQLException: No input parameters.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
... 51 more
Caused by: ERROR 07009: No input parameters.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.sql.GenericParameterValueSet.checkPosition(Unknown Source)
at org.apache.derby.impl.sql.GenericParameterValueSet.getParameterForSet(Unknown Source)
... 47 more