【发布时间】: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