Problema clausola where [RISOLTO]

di il
4 risposte

Problema clausola where [RISOLTO]

Ciao a tutti,
ho connesso un db mysql in un progetto java.
ho creato una classe Query in cui ho dichiarato due stringhe di testo il cui contenuto lo ricevo da un client.
Devo fare una query in cui nella clausola where confronto il contenuto della tabella con queste due stringhe..ma non so come posso fare..
per cui se ho un oggetto String s , è possibile inserirlo nella clausola where ?

4 Risposte

  • Re: Problema clausola where [RISOLTO]

    First01 ha scritto:


    ho connesso un db mysql in un progetto java.
    ho creato una classe Query in cui ho dichiarato due stringhe di testo il cui contenuto lo ricevo da un client.
    Devo fare una query in cui nella clausola where confronto il contenuto della tabella con queste due stringhe..ma non so come posso fare..
    per cui se ho un oggetto String s , è possibile inserirlo nella clausola where ?
    L'intera stringa SQL tecnicamente la potresti benissimo comporre tu concatenando parti fisse (stringhe "letterali") con variabili.
    Ma c'è una questione importante, specialmente per le stringhe. In SQL le stringhe vanno debitamente quotate e di certi caratteri "speciali" va fatto un "escape". Le regole per quoting/escaping in SQL però possono cambiare da un DBMS all'altro. Se sai le regole di quoting/escaping per MySQL, ok, potresti in linea di massima seguire l'approccio fai-da-te.

    Altrimenti in genere è molto più preferibile usare un PreparedStatement (http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html) perché è il driver JDBC che si occupa di quelle questioni che ho detto.
    Vedi esempio sul javadoc linkato.
  • Re: Problema clausola where [RISOLTO]

    Grazie per la guida, l'ho letta ed ho tentato di fare nel modo seguente ma ho avuto degli errori :
    con = Connessione.getConnection();
    String qry = "SELECT username,password FROM Login WHERE username = ? AND password = ?";
                PreparedStatement pstmt = con.prepareStatement(qry);
                pstmt.setString(1, user);
                pstmt.setString(2, pwd);
                res = pstmt.executeQuery(qry);
    in pratica dovrei confrontare la stringa user con la colonna username e la stringa pwd con la colonna password alla ricerca di una corrispondenza..
  • Re: Problema clausola where [RISOLTO]

    First01 ha scritto:


    res = pstmt.executeQuery(qry);
    res = pstmt.executeQuery();

    Perché la query è già "compilata" nel PreparedStatement.
  • Re: Problema clausola where [RISOLTO]

    Funziona grazie mille!!
Devi accedere o registrarti per scrivere nel forum
4 risposte