Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [VB2010 + MySQL] Non esegue salvataggio

    Ciao a tutti,

    ho un problema con una porzione di codice VB 2010. Devo scrivere il contenuto di una textbox all'interno della mia tabella MySQL su server LAN. Premettendo che la connessione avviene in modo regolare e la lettura dei dati attualmente inseriti a mano viene eseguita, il problema deve essere presente nel codice qua sotto:

    codice:
    connetti()
            Try
                Dim query As String = "INSERT INTO tabella (id, nome) VALUES (NULL, " & txtNome.Text & ")"
                Dim esegui As New MySqlCommand(query)
               esegui.ExecuteNonQuery()
            Catch ex As Exception
                MsgBox("errore")
            End Try
            chiudi()
    Nonostante il codice mi sembri corretto non capisco perchè non viene inserito il dato. Dove si trova l'errore che sicuramente ho commesso?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Probabilmente il problema è nella mancanza degli apici per il nome

    (NULL, '" & txtNome.Text & "' )"
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ciao,

    con quella modifica ho fatto dei passi avanti, ma adesso mi da un errore che non riesco a capire. Mi dice che la connessione deve essere aperta, ma io la apro come prima istruzione. Ho fatto la prova a cambiare il codice così:

    codice:
    Dim conn As MySqlConnection = New MySqlConnection()
    conn.ConnectionString = "Data Source=192.168.1.253;Database=test;User ID=utente;Password=password"
            conn.Open()
            Dim query As String = "INSERT INTO tblAnagrafica (id, ragionesociale1) VALUES (NULL, '" & txtRagioneSociale1.Text.ToString & "')"
            Dim esegui As New MySqlCommand(query)
            esegui.ExecuteNonQuery()
            conn.Close()
    e apre l'eccezione su esegui.ExecuteNonQuery(). Che cavolo ho fatto?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  4. #4
    Ciao,

    con quella modifica ho fatto dei passi avanti, ma adesso mi da un errore che non riesco a capire. Mi dice che la connessione deve essere aperta, ma io la apro come prima istruzione. Ho fatto la prova a cambiare il codice così:

    codice:
    Dim conn As MySqlConnection = New MySqlConnection()
    conn.ConnectionString = "Data Source=192.168.1.253;Database=test;User ID=utente;Password=password"
            conn.Open()
            Dim query As String = "INSERT INTO tblAnagrafica (id, ragionesociale1) VALUES (NULL, '" & txtRagioneSociale1.Text.ToString & "')"
            Dim esegui As New MySqlCommand(query)
            esegui.ExecuteNonQuery()
            conn.Close()
    e apre l'eccezione su esegui.ExecuteNonQuery(). Che cavolo ho fatto?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  5. #5
    Adesso faccio alcune prove e cerco di risolvere alcuni errori nel codice, poi ti faccio sapere
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  6. #6
    niente, ho fatto delle prove e adesso mi dice che la connessione deve essere aperta e valida. Allora ho modificato il codice così:

    codice:
    Public conn As MySqlConnection = New MySqlConnection()
    
     Public Sub connetti()
            conn.ConnectionString = "Data Source=" & My.Settings.host & ";Database=" & My.Settings.database & ";User ID=" & My.Settings.utente & ";Password=" & My.Settings.password & ""
            Try
                conn.Open()
            Catch errore_di_connessione As MySqlException
                MsgBox("Non sono riuscito a connettermi perchè: " + errore_di_connessione.Message)
            End Try
    
        End Sub
    
     Public Sub chiudi()
            conn.Dispose()
        End Sub
    
    Dim query As String = "INSERT INTO tblAnagrafica (id, ragionesociale1) VALUES (NULL, '" & txtRagioneSociale1.Text.ToString & "')"
            Dim esegui As New MySqlCommand(query)
            connetti()
            esegui.ExecuteNonQuery()
            chiudi()
    ma continua a darmi l'errore sulla connessione. Da cosa è causato?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  7. #7
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Devi passare la connessione a MySqlCommand, altrimenti mica può prenderla a caso.
    Esegui.connection = conn

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    La connessione deve essere indicata al command
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    ma se io dichiaro a monte del codice connetti(), che è la sub che mi apre la connessione la devo passare di nuovo?

    L'eccezione che mi da è quella relativa alla connessione che deve essere aperta e valida.

    Adesso provo e vediamo
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  10. #10
    modificando il codice adesso funziona, ma non capisco. Il mio codice attuale è

    codice:
    Public conn As MySqlConnection = New MySqlConnection()
        Public Sub connetti()
            conn.ConnectionString = "Data Source=" & My.Settings.host & ";Database=" & My.Settings.database & ";User ID=" & My.Settings.utente & ";Password=" & My.Settings.password & ""
             conn.Open()
    ' qui la connessione è aperta e valida
             End Sub
    
    Private Sub btnSalvaAnagrafica_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalvaAnagrafica.Click
            connetti()
            Dim query As String = "INSERT INTO tblAnagrafica (id, ragionesociale1) VALUES (NULL, '" & txtRagioneSociale1.Text.ToString & "')"
            Dim esegui As New MySqlCommand(query)
            Try
                esegui.Connection = conn 'con questo codice viene eseguito il salvataggio
                esegui.ExecuteNonQuery()
                chiudi()
            Catch ex As Exception
                MsgBox("errore: " & ex.Message)
                chiudi()
            End Try
    
        End Sub
    però se al posto di esegui.Connection = conn scrivo connetti(), che è la mia sub dedicata alla connessione, questa porzione di codice non funziona più. Perchè?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

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 © 2026 vBulletin Solutions, Inc. All rights reserved.