Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    252

    [VB2010 winform] INSERT INTO variabile con virgole e apici

    codice:
    Dim rsr As New OleDb.OleDbCommand
                rsr = New OleDb.OleDbCommand(
                "INSERT INTO regali (id, regalo) VALUES (" & current_id & ",'" & regalo & "')", con)
                            rsr.ExecuteNonQuery()
                con.Close()
    dal codice che posto, salvo sul db senza problemi però se nella variabile regalo
    inserisco un valore con apice o virgola non mi salva e mi va in errore.
    mi ricordo sul vb6 che aggiungevo apici doppi o qualcosa del genere ma qui non riesco a capire cosa fare...

    es. regalo = "orologio" 'salva bene
    regalo = "orologio d'oro" ' non salva perchè c'è l'apice



    grazie

  2. #2
    La soluzione migliore è utilizzare i parametri:
    codice:
    Dim rsr As New OleDb.OleDbCommand
    rsr = New OleDb.OleDbCommand("INSERT INTO regali (id, regalo) VALUES (?, ?)", con)
    rsr.Parameters.Add("?", OleDbType.Integer).Value = current_id
    rsr.Parameters.Add("?", OleDbType.BSTR).Value = regalo
    rsr.ExecuteNonQuery()
    con.Close()
    Chi non cerca trova.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    252
    grande , funziona perfettamente
    però ovviamente ora ho lo stesso problema quando carico i dati dal dataadapter

    secondo me mi manca un passaggio fondamentale

    puoi correggermi il codice.

    codice:
    con.Close()
            con.Open()
            dt.Clear()
    
    
            Dim rs1 As New OleDb.OleDbDataAdapter
    
            ' rs1 = New OleDb.OleDbDataAdapter("SELECT * FROM cmplnn WHERE nome LIKE '" & TextBox1.Text & "' AND data Like '" & TextBox3.Text & "' AND cognome Like '" & TextBox2.Text & "'", con)
            
    
    
    
            rs1.Fill(dt)
    grazie mille

  4. #4
    Se hai capito il codice che ti ho riportato sopra non dovresti avere problemi: crei la stringa sql e metti un ? al posto di ogni parametro, poi carichi i vari parametri usando la collezione Parameters.
    Chi non cerca trova.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    252
    giusto e infatti ho provato in questo modo e mi funziona... dimmi se va bene così la scrittura


    codice:
    Dim rs1 As New OleDb.OleDbCommand(
             "SELECT * FROM cmplnn WHERE nome LIKE ? AND data Like ? AND cognome Like ? ", con)
            rs1.Parameters.Add("?", OleDbType.Integer).Value = varid
            rs1.Parameters.Add("?", OleDbType.BSTR).Value = TextBox1.Text
            rs1.Parameters.Add("?", OleDbType.BSTR).Value = TextBox2.Text
            rs1.Parameters.Add("?", OleDbType.Date).Value = vardata
    
            Dim da As New OleDbDataAdapter(rs1)
            da.Fill(dt)

  6. #6
    Hai messo un parametro in + per ogni punto interrogativo devi mettere un parametro, poi devi eseguire la query e chiudere la connessione come da esempio sopra riportato.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    252
    si in effetti quello del varid non ce l'ho messo poi.. era di troppo.
    poi ho fatto la query e ho chiuso



    cmq funziona quindi ok

    grazie per la dritta anche se l'avevo corretta... intanto è utile per gli altri lettori

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.