2015-11-08 71 views
1

我在Ms-Access中有一個數據庫表,其中包含coulmn名稱CANDIDATE1,CANDIDATE2,CANDIDATE3,CANDIDATE4,CANDIDATE5。我有一個query這是在下面未在Java中找到列

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
    try 
    { 
     String s = (String) jComboBox1.getSelectedItem(); 
     String sql = "SELECT '"+s+"' FROM results"; 
     rs = st.executeQuery(sql); 
     while(rs.next()) 
     { 
      jLabel1.setText(rs.getString(s)); 
     } 
     JOptionPane.showMessageDialog(null,"U have voted "+jComboBox1.getSelectedItem()+",thank you!"); 

    } 
    catch(Exception e) 
    { 
     JOptionPane.showMessageDialog(null,e); 

    } 
}   

的代碼時,我嘗試運行它拋出我一個錯誤Column not found程序。我可以知道我的代碼或查詢有什麼問題嗎?

net.ucanaccess.jdbc.UcanaccessSQLException: Column not found: ADMK 
at net.ucanaccess.jdbc.UcanaccessResultSet.getString(UcanaccessResultSet.java:689) at 

net.ucanaccess.jdbc.UcanaccessResultSet.getString(UcanaccessResultSet.java:689) 
    at pack.user_vote.jButton1ActionPerformed(user_vote.java:152) 
    at pack.user_vote.access$000(user_vote.java:21) 
    at pack.user_vote$1.actionPerformed(user_vote.java:87) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346) 
    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:6525) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 
    at java.awt.Component.processEvent(Component.java:6290) 
    at java.awt.Container.processEvent(Container.java:2234) 
    at java.awt.Component.dispatchEventImpl(Component.java:4881) 
    at java.awt.Container.dispatchEventImpl(Container.java:2292) 
    at java.awt.Component.dispatchEvent(Component.java:4703) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) 
    at java.awt.Container.dispatchEventImpl(Container.java:2278) 
    at java.awt.Window.dispatchEventImpl(Window.java:2739) 
    at java.awt.Component.dispatchEvent(Component.java:4703) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746) 
    at java.awt.EventQueue.access$400(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:697) 
    at java.awt.EventQueue$3.run(EventQueue.java:691) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) 
    at java.awt.EventQueue$4.run(EventQueue.java:719) 
    at java.awt.EventQueue$4.run(EventQueue.java:717) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:716) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
Caused by: java.sql.SQLException: Column not found: ADMK 
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.JDBCResultSet.findColumn(Unknown Source) 
    at org.hsqldb.jdbc.JDBCResultSet.getString(Unknown Source) 
    at net.ucanaccess.jdbc.UcanaccessResultSet.getString(UcanaccessResultSet.java:687) 
    ... 39 more 
Caused by: org.hsqldb.HsqlException: Column not found: ADMK 
    at org.hsqldb.error.Error.error(Unknown Source) 
    at org.hsqldb.error.Error.error(Unknown Source) 
    ... 43 more 

注意:我正在使用ucanaccess進行數據庫連接。

+1

顯示你的籌碼跟蹤。 –

+0

嘗試打印sql字符串並檢查數據庫列是否存在或不存在? – Shriram

+0

顯然無論你從組合框中獲得的是不是一個有效的列名稱。這將有助於看到堆棧跟蹤 – Thevenin

回答

4

我覺得你添加無用簡單的報價,它應該是

String sql = "SELECT "+s+" FROM results"; 

(注:你試圖從列得到一個值,而不是隻是一個字符串)

+0

我能夠訪問只有幾個列別人說,「用戶缺乏特權或對象沒有找到」爲什麼這樣? –

+0

你能說出哪些? –

+0

我完全有5列,在1,2,5不工作。 –