PDA

View Full Version : probblema java query


Pro7on
19-11-2007, 09:57
public boolean esisteUtente(String nomeUtente){

try {

Statement s = this.db.createStatement();
s.executeQuery("SELECT nome FROM utenti");
ResultSet rs = s.getResultSet();
int count = 0;
while (rs.next()) {
String name = rs.getString("nome");
//System.out.println("name:" + name);
if(name.equals(nomeUtente)){

return true;//Il nome esiste già
}else{
return false;//Il nome nn è presente nel db
}
}
rs.close();

} catch (SQLException ex) {
ex.printStackTrace();
}
return false;
}


in pratica e un metodo che mi dovrebbe dire se esiste un utente o no, e mi restituisce false anche se inserisci due volte lo stesso nome

es lista nomi inseriti



compile:
OK! sei Connesso
name:g
false
D:1 riga inserita
g
gigi
prova3
prova3
prova3
debug:




vedete ho inserito g la prima volta e la fatto la seconda ma detto NO ma poi con prova 3 nn mi va piÙ

?_?:help:

Coiauu

isAlreadyInUse
19-11-2007, 10:02
public boolean esisteUtente(String nomeCliente) {
boolean returnValue=false;
try {
Statement s = this.db.createStatement();
s.executeQuery("SELECT NOME FROM UTENTI WHERE UCASE(NOME)=UCASE(" + nomeCliente + ")");
ResultSet rs = s.getResultSet();
int count = 0;
if (rs.next()) {
returnValue=true;
}
rs.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
return returnValue;
}

Pro7on
19-11-2007, 10:11
public boolean esisteUtente(String nomeCliente) {
boolean returnValue=false;
try {
Statement s = this.db.createStatement();
s.executeQuery("SELECT NOME FROM UTENTI WHERE UCASE(NOME)=UCASE(" + nomeCliente + ")");
ResultSet rs = s.getResultSet();
int count = 0;
if (rs.next()) {
returnValue=true;
}
rs.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
return returnValue;
}



nn funziona ! macosa fà quel UCASE?? cmq mi appoggio su mysql ..

isAlreadyInUse
19-11-2007, 10:14
Quella è una funzione di mySQL
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_ucase

comunque la mia è solo un attimino piu ottimizzata, la tua se metti il return alla fine funziona comunque. pero mi sembra inutile scorrere tutto il resultset quando puoi fare tutto in un colpo solo. cerca di far funzionare la select che ti ho datao...io nn l'ho porvata, ma la funzione esiste.
Prova e fammi sapere.

Pro7on
19-11-2007, 10:24
mm ho provato con query browser e la query funziona, il tuo ragionamento lo capito ma nn riesco a capire xchem mi inserisce i dati ugualmente...

errore

OK! sei Connesso
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'gigi' in 'where clause'
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1027)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3378)
false
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3310)
D:1 riga inserita
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1853)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1976)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2497)
gigi
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2426)
gigi
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1383)
gigi
at progetto.Connessione.esisteUtente(Connessione.java:134)
gigi
at progetto.Connessione.addCliente(Connessione.java:149)
gigi
at progetto.Main.main(Main.java:37)
debug:
BUILD SUCCESSFUL (total time: 4 seconds)

isAlreadyInUse
19-11-2007, 10:27
s.executeQuery("SELECT NOME FROM UTENTI WHERE UCASE(NOME)=UCASE('" + nomeCliente + "')");

Pro7on
19-11-2007, 10:31
s.executeQuery("SELECT NOME FROM UTENTI WHERE UCASE(NOME)=UCASE('" + nomeCliente + "')");
non vaa....:muro: :help:

Pro7on
19-11-2007, 10:36
scherzo scherzo funziona :D

era un errore di sintasi :D nel nome della tabella :D

MIllllleeThxx ;)

isAlreadyInUse
19-11-2007, 10:37
Adesso ti deve funzionare


public boolean esisteUtente(String nomeCliente) {
boolean returnValue=false;
try {
PreparedStatement s = this.db.prepareStatement("SELECT NOME FROM UTENTI WHERE UCASE(NOME)=?");
s.setString(1, nomeCliente.toUpperCase());
ResultSet rs =s.executeQuery();
if (rs.next()) {
returnValue=true;
}
rs.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
return returnValue;
}