我正在使用Netbeans IDE开发桌面Java App。我有一个嵌入式Derby数据库,它有几个表。所有表都在APP模式中。我遇到的问题是我正在向DB提出的查询是否带有上述异常。我知道该表存在,如果我从编辑器内部运行完全相同的SQL查询,它将按预期运行。我正在寻找有关问题的帮助,但更多的是寻求帮助,以解决如何解决这样的问题。我附加了一些代码和堆栈跟踪。如果有帮助,请不要犹豫,询问更多信息
public static void doKeywordListDisplayLogic() {
try {
SimpleQuery keywordIdQuery = new SimpleQuery();
keywordIdQuery.setSelectExpressionList("*");
keywordIdQuery.setDataSource("KEYWORD_LOOKUP");
keywordIdQuery.setWherePredicates("SDS_NUMBER");
keywordIdQuery.setComparisonOperator("=");
keywordIdQuery.setQueryPredicate(selectedSdsNumber);//selectedSdsNumber comes from a previous query and table row selection.
keywordIdQuery.simpleQuery();
String keyId = rs.getString("KEY_ID");
System.out.println(keyId);
} catch (Exception e) {
e.printStackTrace();
}
}
public void simpleQuery() {
try {
conn = DbCommunication.JavaConnect.ConnectDb();
String dbQuery = "SELECT ".concat(selectExpressionList).concat(" FROM ").concat(dataSource).concat(" WHERE ").concat(wherePredicates).concat(" ").concat(comparisonOperator).concat(" ").concat(queryPredicate);
System.out.println(dbQuery);
PreparedStatement pst = conn.prepareStatement(dbQuery);
rs = pst.executeQuery();
} catch (Exception e) {
e.printStackTrace(System.out);
JOptionPane.showMessageDialog(null, e);
}
}
***THE SELECT SQL QUERY BELOW IS THE FINAL STRING SUBMITTED TO THE DB***
SELECT * FROM LOCATION_LOOKUP WHERE SDS_NUMBER = 998
java.sql.SQLException: There is no column named: KEY_ID.
at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
at org.apache.derby.client.am.ResultSet.getString(Unknown Source)
at RecordHandling.PopulateRecord.doKeywordListDisplayLogic(PopulateRecord.java:264)
at RecordHandling.PopulateRecord.doRowRetrieval(PopulateRecord.java:202)
at Gui.mainFrame.jButton7ActionPerformed(mainFrame.java:717)
at Gui.mainFrame.access$400(mainFrame.java:25)
at Gui.mainFrame$5.actionPerformed(mainFrame.java:232)
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:3320)
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:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
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:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
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: org.apache.derby.client.am.SqlException: There is no column named: KEY_ID.
at org.apache.derby.client.am.ColumnMetaData.findColumnX(Unknown Source)
at org.apache.derby.client.am.ResultSet.findColumnX(Unknown Source)
... 42 more
答案 0 :(得分:1)
There is no column named: KEY_ID
而不是使用列名检索
String keyId = rs.getString("KEY_ID");
尝试使用索引检索:
String keyId = rs.getString(indexOfKeyId);//if key_id is at column 2 in table, then rs.getString(2)
要进行问题排查,请显示rs
中的所有值,然后查看您所需的输出(密钥ID)是否存在。