Tutti gli
devo essere sostituiti con
Inoltre, tutti i
codice:
titolo=cc++;
autore=cc++
etc...
vanno spostati alla fine di ogni proprio else if
Scusate il doppio post, ma non potevo più modificare quello precedente.
Magari un moderatore potrà cancellare questo post di risposta ed editare quello precedente con le modifiche qua introdotte.
Quindi, il nuovo codice funzionate:
codice:
public String[][] ricercaAvanzata(String[] campi) {
int numero = 0;
System.out.println(campi.length);
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 < campi.length; 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;
if (cc==1) {
query = "SELECT * FROM libri_table WHERE autore=?";
} else {
query = query + " AND autore=?";
}
autore = cc++;
//primo = false;
} else if (i == 2 && !((campi[i]).equals(""))) {
//isbn = true;
if (cc==1) {
query = "SELECT * FROM libri_table WHERE isbn=?";
} else {
query = query + " AND isbn=?";
}
isbn= cc++;
//primo = false;
} else if (i == 3 && !((campi[i]).equals(""))) {
//editore = true;
if (cc==1) {
query = "SELECT * FROM libri_table WHERE casa_editrice=?";
} else {
query = query + " AND casa_editrice=?";
}
editore = cc++;
//primo = false;
} else if (i == 4 && !((campi[i]).equals(""))) {
//anno = true;
if (cc==1) {
query = "SELECT * FROM libri_table WHERE anno=?";
} else {
query = query + " AND anno=?";
}
anno=cc++;
//primo = false;
} else if (i == 5 && !((campi[i]).equals(""))) {
//voto = true;
if (cc==1) {
query = "SELECT * FROM libri_table WHERE voto=?";
} else {
query = query + " AND voto=?";
}
voto=cc++;
//primo = false;
} else if (i == 6 && !((campi[i]).equals(""))) {
//lingua = true;
if (cc==1) {
query = "SELECT * FROM libri_table WHERE lingua=?";
} else {
query = query + " AND lingua=?";
}
lingua=cc++;
//primo = false;
} else if (i == 7 && !((campi[i]).equals(""))) {
//prezzo = true;
if (cc==1) {
query = "SELECT * FROM libri_table WHERE prezzo=?";
} else {
query = query + " AND prezzo=?";
}
prezzo=cc++;
//primo = false;
}
}
System.out.println("titolo->"+titolo);
System.out.println("contatore->"+cc);
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]);
}
System.out.println("Su contaLibri\n");
System.out.println(prstmt.toString());
if ((numero = contaLibri(prstmt.toString())) == 0) {
return risultato;
}
System.out.println("Dopo contaLibri\n");
risultato = new String[numero][8];
ResultSet rs = prstmt.executeQuery();
if (!(rs.next())) {
System.out.println("Nessun risultato trovato.\n");
return risultato;
}
int i = 0;
rs.beforeFirst();
System.out.println("Prima del while\n");
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. pirppi Impossibile eseguire l'operazione richiesta.\n");
e.printStackTrace();
return risultato;
}
System.out.println("Arriva alla fine\n");
for(int i=0;i<numero;i++) {
for(int j=0;j<8;j++) {
System.out.println("["+i+","+j+"]="+risultato[i][j]);
}
}
return risultato;
}