0

このコードが機能しないのはなぜですか? 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')。

助けてください :)

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 に答える