Ho questa banale funzione che tramite un PreparedStatement fa una SELECT banalissima di alcuni campi di una tabella, non tutti.
I parametri passati al metodo sono corettissimi, eccone il contenuto (verificati con print su console):codice:public static ResultSet lanciaPreparedStatement(String stringaSQL, String[] parametri) throws SQLException { PreparedStatement ps = cn.prepareStatement(stringaSQL); // Imposto i parametri del PreparedStatement for (int i=0; i<parametri.length; i++) { ps.setString(i+1, parametri[i]); } ResultSet rs = ps.executeQuery(); return rs; }
In basso la struttura di tb_client, ha 50 record, qui ho limitato la visualizzazione a 10.codice:stringaSQL = "SELECT ?, ?, ? FROM tb_client" parametri[0] = "campo_1" parametri[1] = "campo_2" parametri[2] = "campo_3"
Il risultato, dovrebbe essere una banale:codice:mysql> select * from tb_client limit 10; +----+---------+---------+---------+---------+---------+ | id | campo_1 | campo_2 | campo_3 | campo_4 | campo_5 | +----+---------+---------+---------+---------+---------+ | 1 | 1 | 1 | 1 | 1 | 1 | | 2 | 2 | 2 | 2 | 2 | 2 | | 3 | 3 | 3 | 3 | 3 | 3 | | 4 | 4 | 4 | 4 | 4 | 4 | | 5 | 5 | 5 | 5 | 5 | 5 | | 6 | 6 | 6 | 6 | 6 | 6 | | 7 | 7 | 7 | 7 | 7 | 7 | | 8 | 8 | 8 | 8 | 8 | 8 | | 9 | 9 | 9 | 9 | 9 | 9 | | 10 | 10 | 10 | 10 | 10 | 10 | +----+---------+---------+---------+---------+---------+
e quindi una tabella identica a quella sopra ma che visualizza solo i tre campi, è invece una tabella con 50 record (e fin qui ci siamo) ma con i valori dei record assurdi, guardate sotto:codice:SELECT campo_1, campo_2, campo_3 FROM tb_client
... fino a 50 (azzecca però il totale record), come mai?codice:RISULTATO PREPARED STATEMENT campo_1|campo_2|campo_3| campo_1|campo_2|campo_3| campo_1|campo_2|campo_3| campo_1|campo_2|campo_3| campo_1|campo_2|campo_3| campo_1|campo_2|campo_3| campo_1|campo_2|campo_3| campo_1|campo_2|campo_3|
Mi sembra un po' assurda come cosa, se invece di un PreparedStatement faccio una query normale passando la stringa scritta a mano per intero funziona...

Rispondi quotando