为什么我不能将整数转换为字符串?

时间:2013-06-05 06:00:34

标签: java user-interface jdbc

为什么这段代码不起作用?我正在尝试在我的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')

请帮忙:)

2 个答案:

答案 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;