Avevo messo indici fasulli, tanto non avrebbe mai funzionato in quel modo.Originariamente inviato da rsdpzed
ho capito che hai capito perchè non funziona dal commento: usi lo stesso indice per settare i placeholder.
Sei stato chiaro, ora speriamo di essere riuscito a fare quello che tu suggerivi.Spero di essere stato sufficientemente chiaro.
Mi sembra una bella idea la tua, e senza troppi problemi dovrei risolvere la complicazione che si era presentata.
Vediamo ora se sono riuscito a fare quello che tu proponevi.
codice:public String[][] ricercaAvanzata(String[] campi) { int numero = 0; for(int i=0;i<campi.length;i++) { System.out.println("["+i+"]"+campi[i]); } String query = ""; String[][] risultato = null; int titolo, autore, isbn, editore, anno, voto, lingua, prezzo; //boolean titolo, autore, isbn, editore, anno, voto, lingua, prezzo; //titolo = autore = isbn = editore = anno = voto = lingua = prezzo = false; titolo = autore = isbn = editore = anno = voto = lingua = prezzo = -1; //boolean primo = true; int cc=1; if (!connectDatabase()) { return risultato; } try { for (int i = 0; i < 8; i++) { if (i == 0 && !((campi[i]).equals(""))) { titolo = cc++; //primo = false; query = "SELECT * FROM libri_table WHERE titolo=?"; } else if (i == 1 && !((campi[i]).equals(""))) { //autore = true; autore = cc++; if (cc==0) { query = "SELECT * FROM libri_table WHERE autore=?"; } else { query = query + " AND autore=?"; } //primo = false; } else if (i == 2 && !((campi[i]).equals(""))) { //isbn = true; isbn= cc++; if (cc==0) { query = "SELECT * FROM libri_table WHERE isbn=?"; } else { query = query + " AND isbn=?"; } //primo = false; } else if (i == 3 && !((campi[i]).equals(""))) { //editore = true; editore = cc++; if (cc==0) { query = "SELECT * FROM libri_table WHERE casa_editrice=?"; } else { query = query + " AND casa_editrice=?"; } //primo = false; } else if (i == 4 && !((campi[i]).equals(""))) { //anno = true; anno=cc++; if (cc==0) { query = "SELECT * FROM libri_table WHERE anno=?"; } else { query = query + " AND anno=?"; } //primo = false; } else if (i == 5 && !((campi[i]).equals(""))) { //voto = true; voto=cc++; if (cc==0) { query = "SELECT * FROM libri_table WHERE voto=?"; } else { query = query + " AND voto=?"; } //primo = false; } else if (i == 6 && !((campi[i]).equals(""))) { //lingua = true; lingua=cc++; if (cc==0) { query = "SELECT * FROM libri_table WHERE lingua=?"; } else { query = query + " AND lingua=?"; } //primo = false; } else if (i == 7 && !((campi[i]).equals(""))) { //prezzo = true; prezzo=cc++; if (cc==0) { query = "SELECT * FROM libri_table WHERE prezzo=?"; } else { query = query + " AND prezzo=?"; } //primo = false; } } query = query + ";"; PreparedStatement prstmt = con.prepareStatement(query); if (titolo!=-1) { prstmt.setString(titolo, campi[0]); } if (autore !=-1) { prstmt.setString(autore, campi[1]); } if (isbn !=-1) { prstmt.setString(isbn, campi[2]); } if (editore !=-1) { prstmt.setString(editore, campi[3]); } if (anno !=-1) { prstmt.setString(anno, campi[4]); } if (voto !=-1) { prstmt.setString(voto, campi[5]); } if (lingua !=-1) { prstmt.setString(lingua, campi[6]); } if (prezzo !=-1) { prstmt.setString(prezzo, campi[7]); } if ((numero = contaLibri(prstmt.toString())) == 0) { return risultato; } risultato = new String[numero][8]; ResultSet rs = prstmt.executeQuery(); if (!(rs.next())) { System.out.println("Nessun risultato trovato.\n"); return risultato; } int i = 0; while (rs.next()) { // for (int i = 0; i <= numero; i++) { if (i < numero) { risultato[i][0] = rs.getString("titolo"); risultato[i][1] = rs.getString("autore"); risultato[i][2] = rs.getString("anno"); risultato[i][3] = rs.getString("casa_editrice"); risultato[i][4] = rs.getString("ISBN"); risultato[i][5] = rs.getString("prezzo"); risultato[i][6] = rs.getString("lingua"); risultato[i][7] = rs.getString("voto"); } i++; } rs.close(); prstmt.close(); } catch (SQLException e) { System.out.println("Errore. Impossibile eseguire l'operazione richiesta.\n"); e.printStackTrace(); return risultato; } return risultato; }

Rispondi quotando