【问题标题】:using jTextField to search in database使用 jTextField 在数据库中搜索
【发布时间】:2014-07-13 19:04:04
【问题描述】:

我正在尝试使用 jTextField 搜索数据并在 jTable 中查看我正在使用以下代码,但收到以下消息。

java.sql.SQLSyntaxErrorException:不支持“INTEGER”和“VARCHAR (UCS_BASIC)”之间的比较。类型必须具有可比性。字符串类型也必须有匹配的排序规则。如果排序规则不匹配,一个可能的解决方案是将操作数强制转换为默认排序规则,例如SELECT tablename FROM sys.systables WHERE CAST(tablename 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);
            }  

【问题讨论】:

  • 您在数据库中的 ID 字段使用什么类型的数据类型?
  • 我使用的是 Integer 但我更改为 varchar 仍然收到相同的消息
  • 尝试在 jTextField2.getText() 周围附加单引号。另外,我建议你使用PreparedStatements

标签: java sql swing


【解决方案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());
}

注意,请确保在 try catch 块中使用 Integer.parseInt(),它可能会抛出 NumberFormatException

【讨论】:

  • 感谢 Jacob,我在线程“AWT-EventQueue-0”java.lang.NumberFormatException 中收到以下错误异常:对于输入字符串:“1”在 java.lang.NumberFormatException.forInputString(NumberFormatException.java :65) 在 java.lang.Integer.parseInt(Integer.java:569) 在 java.lang.Integer.parseInt(Integer.java:615) 在 n
猜你喜欢
  • 1970-01-01
  • 2014-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 2015-11-07
  • 1970-01-01
相关资源
最近更新 更多