Ho letto la soluzione da questa domanda PreparedStatement IN clause alternatives?. Ma nel mio caso, ho circa 5000 parametri in una clausola In e porterei a java.sql.SQLException: L'istruzione preparata o callable ha più di 2000 marcatori di parametri.PreparedStatement con migliaia di parametri in una clausola IN
Io sto usando uno SQL come
String sql = "select * from project in " + projectIds.toString()
projectIds
è uno StringBuilder, che è come "(1,2,3,4 ....)" Ma rapporto di sicurezza il codice dice che potrebbe portare ad una SQL Injection. Quindi devo usare? segnaposto per evitarlo.
Ho cercato di usare
String sql = "select * from project where charindex(','+convert(varchar(max),id)+',', ?)>0";
statement.setString(1,projectIds.toString);//projectIds like ",1,2,3,4,"..
ma finisce con un errore di sintassi non corretta.
C'è qualche soluzione ???
SQL, * charindex * sembra Non corretto. Suggerisci di ricontrollarlo e riscriverlo in un altro modo, se puoi. – Minus