为什么这段代码不起作用?我正在尝试在我的jtext字段中自动填充,但如果它不是字符串,它将不允许我选择名称字段。
我尝试将p_id
转换为string
,但仍然无效。
这是我的代码:
int row = tablePatient.getSelectedRow();
String Table_click=(tablePatient.getModel().getValueAt(row, 10).toString());
String sql ="select * from patient where p_id='"+Table_click+"'";
pst =conn.prepareStatement(sql);
rs=pst.executeQuery();
if(rs.next()){
String add10=rs.getString(String.valueOf("p_id"));
pat_id.setText (add10);
}
**我有其他add1,add2,但我选择不显示它,因为这会浪费空间
我的错误是:
ava.sql.SQLSyntaxErrorException:'INTEGER'和。之间的比较 'CHAR(UCS_BASIC)'不受支持。类型必须具有可比性。串 类型还必须具有匹配的排序规则。如果排序规则不匹配, 一种可能的解决方案是转换操作数以强制它们为默认值 排序规则(例如SELECT tablename FROM sys.systables WHERE CAST(tablename AS VARCHAR(128))='T1')
请帮忙:)
答案 0 :(得分:4)
以正确的方式使用PreparedStatement
:
String sql ="select * from patient where p_id=?";
pst =conn.prepareStatement(sql);
pst.setInt(1, Integer.parseInt(Table_click));
//in case p_id is a VARCHAR, comment above line and uncomment below line
//pst.setString(1, Table_click);
rs=pst.executeQuery();
//rest of code...
此外,这条线非常糟糕:
String add10=rs.getString(String.valueOf("p_id"));
String#valueOf
另一个String就像使用相同的String。只需使用:
String add10=rs.getString("p_id");
答案 1 :(得分:0)
删除'
query
将query
更改为
String sql ="select * from patient where p_id="+Table_click;