gpt4 book ai didi

java - 使用 jTextField 在数据库中搜索

转载 作者:行者123 更新时间:2023-12-01 12:45:40 25 4
gpt4 key购买 nike

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

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

最佳答案

jTextField 对象上调用的方法 getText() 将返回一个 String我猜您的数据库 ID 是 int 这就是您收到 SQLSyntaxErrorException

的原因

解决这个问题最简单的方法是将 String 解析为 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 block 中使用 Integer.parseInt(),它可能会抛出 NumberFormatException

关于java - 使用 jTextField 在数据库中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24726203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com