2013-04-17 3 views
0

안녕하세요. 텍스트 필드의 동일한 테이블에서 관련된 레코드를 가져오고 싶습니다. 그런 선택을 기반으로 한 콤보 상자를 사용하는 동안 데이터베이스에서 레코드를 가져 오려고합니다.하지만 불행히도 저는 오류가 발생했습니다. 누구든지 코드에서 내 실수는 어디에서 발췌합니까?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) 
+0

오류가 무엇을 반환하도록 최적화 할 수 있습니까? –

+1

@ Franz..com.mylogin.Testingproductmaster $ 1.itemStateChanged (Testingproductmaster.java:58) –

답변

0

이 검색되는 기록을 사용하는 JComboBoxItemListener

ResultSet rs1 = stmt.executeQuery(); 

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

주에 ResultSet 커서를 전진해야합니다. 보다 구체적인 WHERE일 수 있습니다productname 고유하지 않은 경우 데이터베이스 쿼리에서 단일 레코드를 반환해야합니다.

편집 : 값이 열 인덱스 1에서 반환되는이 오류

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

에서 실제로 유효한 정수 값이 아닙니다 (텍스트 유형으로 나타납니다). 확인하려면 당신의 SQL 클라이언트에서 SQL

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

를 호출하고 당신이 당신의 qty 정수 변수와 일치하는 올바른 인덱스에서 읽고 있는지 확인합니다.

양이 인이 검색 한 데이터 만 있으면

은, 다음 쿼리는 해당 정보

Select quantity from productorder where productname=? 
+1

@ Reimeus .... 같은 줄에 여전히 오류가 있습니다 .. –

+2

@Devmurari 전체 스택 추적을 게시하십시오 – Reimeus

+1

@ Reimeus..i edited 질문 전체 스택 추적 .. 도와주세요 –