簡體   English   中英

無法從JTexField中的數據庫獲取記錄

[英]Can't Fetch record from database in JTexField

您好,我在嘗試使用基於該選擇的一個組合框時試圖從數據庫中獲取記錄,我想從文本字段的同一張表中獲取相關記錄..但不幸的是,我遇到了錯誤..有人可以給我摘要嗎代碼錯誤?

 try {
        Class.forName("com.mysql.jdbc.Driver");
        con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/testdatabase", "root", "ubuntu123");
        Statement st = con.createStatement();
        ResultSet rs = st.executeQuery("Select productname,quantity from productorder");

        // ResultSet rs1 = st.executeQuery("Select quantity from productorder");

        while (rs.next()) {

            jComboBox1.addItem(rs.getString("productname"));

        }

        jComboBox1.addItemListener(new ItemListener() {

            public void itemStateChanged(ItemEvent ie) {

                try {
                    String str = (String) jComboBox1.getSelectedItem();
                    //Statement st1 = con.createStatement();
                    PreparedStatement stmt = (PreparedStatement) con.prepareStatement("Select * from productorder where productname=?");
                    stmt.setString(1, str);
                    ResultSet rs1 = stmt.executeQuery();
                    jTextField2.setText(str);

                    Integer qty=rs1.getInt(1); // Error in this line at com.mylogin.Testingproductmaster$1.itemStateChanged(Testingproductmaster.java:58)

                  jTextField1.setText(qty.toString());

                } catch (SQLException ex) {
                      Logger.getLogger(Testingproductmaster.class.getName()).log(Level.SEVERE, null, ex);
                }

全棧跟蹤

  18 Apr, 2013 5:14:33 PM com.mylogin.Testingproductmaster$1 itemStateChanged
  SEVERE: null
  java.sql.SQLException: Invalid value for getInt() - 'TCS'

  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929)
at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2725)
at com.mylogin.Testingproductmaster$1.itemStateChanged(Testingproductmaster.java:62)
at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1222)
at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1279)
at javax.swing.JComboBox.contentsChanged(JComboBox.java:1326)
at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:117)
at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:105)
at javax.swing.JComboBox.setSelectedItem(JComboBox.java:574)
at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:620)
at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:831)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
at java.awt.Component.processMouseEvent(Component.java:6389)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3268)
at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:497)
at java.awt.Component.processEvent(Component.java:6154)
at java.awt.Container.processEvent(Container.java:2045)
at java.awt.Component.dispatchEventImpl(Component.java:4750)
at java.awt.Container.dispatchEventImpl(Container.java:2103)
at java.awt.Component.dispatchEvent(Component.java:4576)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4633)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4297)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4227)
at java.awt.Container.dispatchEventImpl(Container.java:2089)
at java.awt.Window.dispatchEventImpl(Window.java:2518)
at java.awt.Component.dispatchEvent(Component.java:4576)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:672)
at java.awt.EventQueue.access$400(EventQueue.java:96)
at java.awt.EventQueue$2.run(EventQueue.java:631)
at java.awt.EventQueue$2.run(EventQueue.java:629)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)
at java.awt.EventQueue$3.run(EventQueue.java:645)
at java.awt.EventQueue$3.run(EventQueue.java:643)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:642)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)

確保在JComboBox ItemListener推進ResultSet游標

ResultSet rs1 = stmt.executeQuery();

if (rs1.next()) {
    Integer qty = rs1.getInt(1);
    ...
}

請注意,這將使用檢索到的第一條記錄。 如果productname不是唯一的,則可能需要更具體的WHERE子句才能從數據庫查詢返回單個記錄。

編輯:從此錯誤

java.sql.SQLException: Invalid value for getInt() - 'TCS'

實際上,在列索引1返回的值不是有效的整數值(似乎是文本類型)。 要檢查調用您的SQL

Select * from productorder where productname='<Some Product Here>'

在您的SQL客戶端中,並確保您從正確的索引中進行讀取以匹配您的qty整數變量。

如果數量是唯一要檢索的數據,則可以優化查詢以僅返回該信息

Select quantity from productorder where productname=?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM