Inserire un varchar che contiene la virgoletta singola

di il
6 risposte

Inserire un varchar che contiene la virgoletta singola

Devo inserire il codice prodotto che è un varchar e per inserirlo faccio così:
INSERT INTO table_products (product_code, description)
VALUES ('CC'CC'DD', 'descrizione casuale') ;
E mi da errore presumo perché nel codice prodotto ci sono le virgolette singole. Come risolvere il problema? Grazie.

6 Risposte

  • Re: Inserire un varchar che contiene la virgoletta singola

    Raddoppia gli apici interni
    
    INSERT INTO table_products (product_code, description)
    VALUES ( 'CC''CC''DD', 'descrizione casuale') ;
    
  • Re: Inserire un varchar che contiene la virgoletta singola

    Ci sono degli altri caratteri, oltre all'apice singolo che potrebbero dare problemi? Se sì, quali e come risolvo la cosa? Grazie mille
  • Re: Inserire un varchar che contiene la virgoletta singola

    Hai un problema specifico con qualche altro carattere?
  • Re: Inserire un varchar che contiene la virgoletta singola

    Fondamentalmente queste query si fanno SOLO con i tool di accesso al DB.
    E risolvi le rogne dei caratteri di volta in volta cercando con Google.

    Se lo fai da codice, ci sono altri sistemi che si ""smazzano"" TUTTI i problemi di codifica dei caratteri

    Ci sono MOLTI caratteri che possono dare problemi. Devi leggerti la documentazione!
  • Re: Inserire un varchar che contiene la virgoletta singola

    Dove trovo questa documentazione?
    No, non ho problemi specifici con qualche altro carattere, ma siccomemysql lo sto usando con Java, l'utente chissà che carattere potrebbe inserire...
  • Re: Inserire un varchar che contiene la virgoletta singola

    E allora usa le PreparedStatements. Sono state inventate proprio per questo.
    
    String valorePrimoCampo = ...;   // l'utente scrive quello che vuole
    String valoreSecondoCampo = ...;   // l'utente scrive quello che vuole
    
    String sql = "INSERT INTO tabella VALUES(?,?);
    PreparedStatement pstmt = null;
    try {
        pstmt = con.prepareStatement( sql );
        pstmt.setString(1, valorePrimoCampo);
        pstmt.setString(2, valoreSecondoCampo);
        pstmt.executeUpdate();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (pstmt != null) try { pstmt.close(); } catch (Exception e) { }
    }
    
Devi accedere o registrarti per scrivere nel forum
6 risposte