使用 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() 周围附加单引号。另外,我建议你使用PreparedStatement
s
【参考方案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 进行参数传递