View Full Version : [JAVA] Problema di interrogazione di un DB - urgentissimo!!!!!
sprax_87
20-06-2011, 20:36
Salve ho una classe java che deve interrogare un DB contenente una tabela di Studenti, in particolare deve restituire gli elementi aventi un Nome diverso da Mario oppure un Cognome diverso da Rossi.
Ora, il codice che ho usato è stato il seguente:
ResultSet rs1=c.eseguiQuery("SELECT * FROM Studenti WHERE Nome <> Mario OR Cognome <> Rossi;");
while(rs.next){
Studente.setNome(rs.getString("Nome"));
Studente.setCognome(rs.getString("Cognome"));
.
.
.
.
}
Ma nonostante ciò mi restituisce TUTTI gli studenti compresi quelli il cui nome è mario o il cui cognome è rossi.
Dov'è che sbaglio???? :muro:
ingframin
20-06-2011, 21:13
ResultSet rs1=c.eseguiQuery
Che cos'è "c"?
è un oggetto Statement?
sprax_87
20-06-2011, 21:30
Si scusa mi sono dimenticata di dirlo... c è un oggetto della seguente classe:
package org.example.www.classi;
import java.sql.*;
public class ConnectDB {
private String url="jdbc:mysql://localhost:3306/";
private String userName="root";
private String password="";
private Connection c;
private Statement stmt;
public Connection Connect(String db){
try{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
try{
c = DriverManager.getConnection(url+db, userName,password);
}
catch(SQLException e){
e.printStackTrace();
}
return c;
}
public ResultSet eseguiQuery(String sql, String db)throws SQLException, ClassNotFoundException{
Connect(db);
stmt = c.createStatement();
ResultSet rs=stmt.executeQuery(sql);
return rs;
}
public void closeConnect(){
try{
if(null==c){
c.close();
c = null;
}
}
catch (SQLException e){
e.printStackTrace();
}
}
public Statement createStatement() throws SQLException {
return c.createStatement();
}
public void eseguiUpdate(String sql, String db)throws SQLException, ClassNotFoundException{
Connect(db);
Statement st;
st = c.createStatement();
st.executeUpdate(sql);
closeConnect();
}
}
Riguarda bene la query, stai chiedendo al database di restituirti tutti quelli che hanno un nome diverso da Mario OR un cognome diverso da Rossi.
Mario Verdi soddisfa questa condizione? sì, quindi viene restituito
Giovanni Rossi soddisfa questa condizione? sì, quindi viene restituito
sprax_87
21-06-2011, 07:46
Il problema era che mi restituiva persino uno che si chiamava Mario Rossi, che non avrebbe dovuto restituirmi...cmq dopo tante prove sn riuscita a trovare il prblema....JAVA per il diversi accetta != e no <>...
Cmq grazie lo stesso :)
Ciao ciao:)
ingframin
21-06-2011, 08:07
usare "<>" per il diverso sara' mica un influenza pythonistica:Prrr:
SELECT * FROM Studenti WHERE Nome <> Mario OR Cognome <> Rossi;
Che db usi? Prende le query con stringhe non apicizzate? Magari 'Mario' e 'Rossi' (con gli apici) li gradisce di più...
sprax_87
21-06-2011, 13:01
Si le '' le richiede ovviamente, infatti le ho inserite è stato un errore di copia del codice... anziché copiare l'ultimo che avevo generato ho copiato la bozza... =P
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.