PreparedStatement com cláusula IN

:?: E ai pessoal, como vão as coisas por ai?

Estou tentando fazer um PreparedStatement, em uma query com a cláusula in, alguém por ai já usou isso?

Um grande abraço para todos e qualquer ajuda é bem vinda! :wink:

Estou querendo fazer uma coisa mais ou menos assim:

[code] String qry =
“select * \n” +
“from \n” +
" tabela, \n" +
“where \n” +
" coluna in (?)";

	try {
		Class.forName("org.postgresql.Driver");
		Connection conn = DriverManager.getConnection("jdbc:postgresql://192.107.14.144:5432/desenv?charSet=UTF-8","postgres","senha");
		PreparedStatement st = conn.prepareStatement(qry);


		//  **********************************
		// é isso que estou tentando fazer
		//  **********************************
		int[] a = {1,2,3,4};
		st.setAlgumaCoisa(1,a);
		//  **********************************
		
		ResultSet rs = st.executeQuery();[/code]

String qry = "select * " + "from " + " tabela, " + "where " + " coluna in (?)";

? tá certo que não tem nada a ver com a sua pergunta mas não precisa dele.

:arrow: Achei um negócio na net, não sei se é o jeito certo, mas funcionou… heheheh…

Valeu galera. Mesmo assim, não achei que esse é o jeito certo, se alguém tiver alguma outra dica por ai…
um abraço… :wink:

Vejam que o ? está comentado, /* ? /, depois no setString, fecho o comentário dos dois lados e adiciono o in setString("/(1,2,3)/").
o que aconteceu, as aspas do setString ficam comentadas…
na query vai ficar assim: in /
/ (1,2,3) /’*/

[code] String qry =
“select * \n” +
“from \n” +
" tabela \n" +
“where \n” +
" coluna in /* ? */";

  try {
     Class.forName("org.postgresql.Driver");
     Connection conn = DriverManager.getConnection("jdbc:postgresql://192.107.14.144:5432/desenv?charSet=UTF-8","postgres","senha");
     PreparedStatement st = conn.prepareStatement(qry);


     //  **********************************
     // é isso que estou tentando fazer
     //  **********************************
     st.setString(1,"*/(1,2,3)/*");
     //  **********************************
     
     ResultSet rs = st.executeQuery();[/code]

Ugh… :shock:

Faz muita falta tambem um setXxx que recebesse o nome do campo, ao inves do indice numerico dele… algo como

INSERT INTO table ( :nome, :idade )
...
p.setString("nome", "meuNome");
p.setInt("idade", 99);
...

Rafael