使用 jTextField 在数据库中搜索

Posted

技术标签:

【中文标题】使用 jTextField 在数据库中搜索【英文标题】:using jTextField to search in database 【发布时间】: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 【参考方案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

以上是关于使用 jTextField 在数据库中搜索的主要内容,如果未能解决你的问题,请参考以下文章

使用来自 JtextField 的 java/jdbc 进行参数传递

使用任何过滤器在数据库中搜索

无法将输入从 JTextField 存储到文件写入器

如何在 JTextField 中显示淡灰色的“重影文本”?

在 java 中使用 JTextfields 将数据更新到 oracle 数据库中的问题

java不合理的jtextfield大小问题