2014-07-13 68 views
0

我想在jTable中使用jTextField和视图搜索数据我使用下面的代码,但我得到以下消息。使用jTextField在数据库中搜索

java.sql.SQLSyntaxErrorException:不支持'INTEGER'和'VARCHAR(UCS_BASIC)'之间的比较。类型必须具有可比性。字符串类型也必须具有匹配的排序规则。如果排序规则不匹配,则可能的解决方案是将操作数强制转换为默认排序规则,例如SELECT FROM表名WHERE sys.systables CAST(表名AS VARCHAR(128))= 'T1')

try{ 
String host = "jdbc:derby://localhost:1527/PROCAT"; 
String uName = "zain"; 
String uPass = "zain"; 
con = DriverManager.getConnection(host,uName,uPass); 
sql = con.createStatement(); 
       sql=con.createStatement();  
       rs=sql.executeQuery("select * from DATASAV where ID="+jTextField2.getText()); 

           while (rs.next()) { 


        String Name = rs.getString("PROID"); 
        String Protxt = rs.getString("PRODNAME"); 
        String pro = rs.getString("PROPRICE"); 
        String[] data = {Name, Protxt, pro}; 
        tabMode.addRow(data); 

        jTextField1.setText(rs.getString(2)); 
        jTextField3.setText(rs.getString(3)); 

      } 
      catch(Exception ex) 
      { 
       JOptionPane.showMessageDialog(null,ex); 
      } 
+0

你在数据库的ID字段中使用了什么类型的数据类型? – maxx777

+0

我正在使用整数,但我改为varchar,而且我仍然得到相同的消息 – mohza

+0

尝试在jTextField2.getText()周围添加单引号。 另外,我会建议你使用'PreparedStatement's – maxx777

回答

1

呼吁jTextField对象将返回的方法getText()一个String 我猜你的数据库ID是int是为什么你得到SQLSyntaxErrorException

解决最简单的方法将是解析字符串转换成int

String valueAsString = jTextField2.getText(); 
try { 
    int num = Integer.parseInt(valueAsString); 
    sql=con.createStatement();  
    rs=sql.executeQuery("select * from DATASAV where ID=" + num); 
} 
catch (NumberFormatException e){ 
    System.out.println("Invalide Number + " e.getMessage()); 
} 

通知,请确保您使用Integer.parseInt()在try catch块内,它可能会抛出NumberFormatException

+0

谢谢雅各布我在线程“AWT-EventQueue-0”中得到以下错误异常java.lang.NumberFormatException:对于输入字符串:“1” \t at java.lang .NumberFormatException.forInputString(NumberFormatException.java:65) \t在java.lang.Integer.parseInt(Integer.java:569) \t在java.lang.Integer.parseInt(Integer.java:615) \t以n – mohza