レコード ID がリストにないデータベースからレコードを選択しようとしています。
以下の@私の問題を見てください。
String Sqlids = "2,6,3,9"; // this is dynamic so the number of element is unknown
String str= "SELECT TOP 1 * FROM student WHERE ID NOT IN (2,6,3,9) ORDER BY NEWID()";
PreparedStatement stat = con.prepareStatement(str);
ResultSet rs = stat.executeQuery();
上記のステートメントは正常に機能しますが、変更すると
String Sqlids = "2,6,3,9";
String str= "SELECT TOP 1 * FROM student WHERE ID NOT IN (Sqlids) ORDER BY NEWID()";
PreparedStatement stat = con.prepareStatement(str);
ResultSet rs = stat.executeQuery();
//i also try this
String Sqlids = "2,6,3,9";
String str= "SELECT TOP 1 * FROM student WHERE ID NOT IN (?) ORDER BY NEWID()";
PreparedStatement stat = con.prepareStatement(str);
stat.setString(1,Sqlids );
ResultSet rs = stat.executeQuery();
上記のステートメントはフィルター処理されません Sqlids は 1 つの文字列であり、それを 1 つのパラメーターとして認識しているため、繰り返し行を返すため、 2,6,3,9 のような値を格納するための整数形式はありますか? Sqlids は SqlidList という配列リストからのものであるため、このように somtin を試します
Iterator iTr = SqlidList.iterator();
while(iTr.hasNext()){
stat.setString(1,iTr.next().toString()+",");
}
しかし、setString(1,--) は while ループにあるため使用できません