Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    22

    [JAVA] Problema di interrogazione di un DB

    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:

    codice:
    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:

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    in altre parole, gli unici a non essere pescati dalla query sono i signori "Mario Rossi". Il che è normale, in quanto :

    http://dev.mysql.com/doc/refman/5.0/...operators.html

    OR, ||

    Logical OR. When both operands are non-NULL, the result is 1 if any operand is nonzero, and 0 otherwise. With a NULL operand, the result is 1 if the other operand is nonzero, and NULL otherwise. If both operands are NULL, the result is NULL.

    mysql> SELECT 1 || 1;
    -> 1
    mysql> SELECT 1 || 0;
    -> 1
    mysql> SELECT 0 || 0;
    -> 0
    mysql> SELECT 0 || NULL;
    -> NULL
    mysql> SELECT 1 || NULL;
    -> 1
    ovvero lo puoi considerare (suggerito anche dal ||) un OR short-circuit, che ritorna vero non appena trova un valore 1.

    Vediamo il tuo caso nello specifico:

    Angela Verdi
    Mario Rossi
    Mario Gialli
    Andrea Rossi
    Sprax Ottantasette

    Ti aspetti dalla tua query:
    Angela Verdi
    Sprax Ottantasette

    e invece ritorna tutto fuorché "Mario Rossi".
    Alla luce di quanto spiegato nel manuale, la valutazione dell'espressione porta a:

    "Angela" <> "Mario" ? Sì. Non valuto il cognome, 1 or 0 = 1. Angela Verdi fa parte del RS

    "Mario" <> "Mario" ? No. Valuto il cognome. "Rossi" <> "Rossi" ? No, 0 or 0 = 0 e il signor Mario Rossi non fa parte del RS

    "Mario" <> "Mario" ? No. Valuto il cognome. "Gialli" <> "Rossi" ? Sì. 0 or 1 = 1 e il signor Mario Gialli fa parte del RS !!

    avrai capito che succede lo stesso con Andrea Rossi (anzi, la valutazione della condizione si interrompe subito, in quanto "Andrea" <> "Mario")

    Come si risolve, chiederai... quello che vuoi fare tu si chiama "AND"...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    22
    Il mio problema è che me li restituisce tutti compreso MARIO ROSSI che è l'unico che vorrei che non mi restituisse....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.