vì vậy tôi đang cố truy xuất dữ liệu từ một DB. Có lẽ tôi đã xem xét nó quá nhiều nhưng tôi không thể tìm thấy vấn đề.Tuyên bố được chuẩn bị SQL Ngoại lệ "Không có tham số đầu vào"
Kết nối tốt, Tuyên bố là tốt (hoạt động với dữ liệu tĩnh) và dữ liệu từ đối tượng Item
là chính xác.
Điều đó cho tôi biết không có tham số đầu vào nào cho câu lệnh. Ngoại lệ được ném theo phương pháp getSelectPrepareStatement()
. Mã này là:
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()]);
}
Lấy PreparedStatement với thiết lập giá trị ở đây:
private PreparedStatement getSelectPrepareStatement(String SQL, String data) throws SQLException {
PreparedStatement pStmt = conn.prepareStatement(SQL);
pStmt.setString(1, data);
return pStmt;
}
các eexception đã được ném vào các cuộc gọi đến pStmt.setString(1, data);
mặc dù tôi thiết lập báo cáo kết quả để có một paramenter.
Lỗi này là:
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