0

为什么这段代码不起作用?我正在尝试自动填充我的 jtext 字段,但如果它不是字符串,它不会让我选择名称字段。

我试图将 my 转换p_id为 astring但它仍然不起作用。这是我的代码:

 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')

请帮忙 :)

4

2 回答 2

4

以正确的方式使用PreparedStatements:

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 add10=rs.getString("p_id");
于 2013-06-05T06:06:30.380 回答
0

删除'您的query

把你query改成

 String sql ="select * from patient where p_id="+Table_click;
于 2013-06-05T06:04:25.613 回答