2014-02-14 4 views
-1

Я использую Netbeans IDE для разработки настольного приложения Java. У меня встроенная база данных Derby, в которой есть несколько таблиц. Все таблицы приведены в схеме APP. Проблема, с которой я сталкиваюсь, заключается в том, что запрос, который я делаю в БД, возвращается с указанным выше исключением. Я знаю, что таблица существует, и если я запускаю тот же SQL-запрос изнутри редактора, он работает так, как ожидалось. Я ищу помощь в решении этой проблемы, но тем более ищут помощь в том, как вы можете устранить эту проблему. Я добавил код и трассировку стека. Пожалуйста, не стесняйтесь обращаться к нам для получения дополнительной информации, если это поможетjava.sql.SQLException: Нет столбца с именем:

 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 
+1

Каково определение таблицы? –

+0

MichaelT благодарит за ответ. Что вы имеете в виду по определению таблицы? – notionDesign

+0

можете ли вы напечатать строку dbquery? а также схема таблицы –

ответ

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, и если ваш желаемый результат (Идентификатор ключа) есть.

+0

указывает на ошибку компилятора. Что-то нужно импортировать или это то, что мне нужно реализовать? Извините за мое невежество. Я новичок в sql и java, но я учусь, и я очень ценю все быстрые ответы. – notionDesign

+0

Как вы его написали? – Baby

+0

Я не совсем понял это, пока вы не добавили комментарий. Это работает отлично! В чем причина, по которой она терпит неудачу при использовании имени столбца? – notionDesign

Смежные вопросы