この Question PreparedStatement IN 句の代替案から解決策を読みましたか? . しかし、私の場合、 In 句に約 5000 個のパラメーターがあり、 java.sql.SQLException: Prepared or callable statement has more than 2000 parameter marker につながります。
私は次のようなSQLを使用していました
String sql = "select * from project in " + projectIds.toString()
projectIds
"(1,2,3,4....)" のような StringBuilder ですが、コード セキュリティ レポートによると、SQL インジェクションにつながる可能性があります。だから私は使用する必要がありますか?それを避けるためのプレースホルダー。
使ってみた
String sql = "select * from project where charindex(','+convert(varchar(max),id)+',', ?)>0";
statement.setString(1,projectIds.toString);//projectIds like ",1,2,3,4,"..
しかし、正しくない構文エラーが発生します。
解決策はありますか???