Zrobiłem odczytać rozwiązanie z tego pytania PreparedStatement IN clause alternatives?. Ale w moim przypadku mam około 5000 parametrów w klauzuli "In" i prowadzi to do java.sql.SQLException: Przygotowana lub wywoływalna instrukcja ma ponad 2000 znaczników parametrów.PreparedStatement z tysiącami parametrów w klauzuli IN
używałem SQL jak
String sql = "select * from project in " + projectIds.toString()
projectIds
jest StringBuilder który jest jak "(1,2,3,4 ....)" Ale raport security code mówi, że może to prowadzić do wtrysk sql. Więc muszę użyć? symbol zastępczy, aby tego uniknąć.
Próbowałem użyć
String sql = "select * from project where charindex(','+convert(varchar(max),id)+',', ?)>0";
statement.setString(1,projectIds.toString);//projectIds like ",1,2,3,4,"..
Ale to kończy się błędnym błąd składni.
Czy istnieje jakieś rozwiązanie?
programu SQL * charIndex * wydaje niepoprawne. Zalecamy sprawdzenie go ponownie i przepisanie go w inny sposób, jeśli możesz. – Minus