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

    [VB.NET - MySql]Classe connessione

    Salve, ho questo modulo con cui inserisco dei dati nel db.

    Dovendo fare altri moduli per inserimento di dati, vorrei esternalizzare la connessione al db in un altra classe.

    Cosa dovrei spostare? la funzione call non mi funziona con la prova che ho fatto.

    codice:
    'libreria per usare mysql
    Imports MySql.Data.MySqlClient
    
    Public Class fornitoriInserisci
    
        'parametri di connessione
        Dim ServerString As String = "Server=localhost;User Id=root;Password=password;Database=db"
    
        'nuova variabile di connessione
        Dim SQLConnection As MySqlConnection = New MySqlConnection
    
    
        Private Sub fornitoriInserisci_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            'stringa di connessione
            SQLConnection.ConnectionString = ServerString
    
            Try
                'se la connessioneè kiusa, aprila
                If SQLConnection.State = ConnectionState.Closed Then
                    SQLConnection.Open()
                    'MsgBox("Connessione con il server effettuata con successo")
                Else
                    'altrimenti errore
                    SQLConnection.Close()
                    MsgBox("Error. Control connection parameter")
                End If
    
                'stampa messaggio errore
            Catch ex As Exception
                MsgBox(ex.ToString)
    
            End Try
    
        End Sub
    
        Private Sub btnInserisci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInserisci.Click
    
            If txtRagioneSociale.Text = String.Empty Then
                MsgBox("Impossibile inserire i dati nell'archivio. Controllare che il campo Ragione Sociale non sia vuoto", MsgBoxStyle.Critical, "Impossibile effettuare l'operazione")
    
            ElseIf txtCognome.Text = String.Empty Then
                MsgBox("Impossibile inserire i dati nell'archivio. Controllare che il campo Ragione Sociale non sia vuoto", MsgBoxStyle.Critical, "Impossibile effettuare l'operazione")
    
            Else
    
                Dim SQLStatement As String = "INSERT INTO anagraficafornitori(ragioneSociale) VALUES('" & txtRagioneSociale.Text & "')"
    
                inserisciFornitore(SQLStatement)
    
            End If
    
        End Sub
    
        Public Sub inserisciFornitore(ByRef SQLStatement As String)
            Dim cmd As MySqlCommand = New MySqlCommand
    
            With cmd
                .CommandText = SQLStatement
                .CommandType = CommandType.Text
                .Connection = SQLConnection
                .ExecuteNonQuery()
            End With
    
            SQLConnection.Close()
            MsgBox(txtRagioneSociale.Text & " aggiunto con successo")
            SQLConnection.Dispose()
    
        End Sub  
    
    End Class

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Loliva Fabio A.
    la funzione call non mi funziona con la prova che ho fatto.
    Cosa vuol dire non mi funziona?
    Da errore? Non succede nulla?

    Fai debug passo per passo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    l'intero codice riportato funziona perfettamente. vorrei solo spostare in un altro modulo la connessione e richiamarla quando mi serve scrivendo solo delle query.
    quale parte di codice devo spostare?
    come è possibile chiamare la connessione per poi scrivere solo le query?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Loliva Fabio A.
    vorrei solo spostare in un altro modulo la connessione e richiamarla quando mi serve scrivendo solo delle query. quale parte di codice devo spostare?
    La parte che hai detto. Se vuoi condividere una parte di codice, quella è la parte da spostare.

    Ci sono vari modi per farlo, quindi non è chiaro che tipo di aiuto ti si debba dare.

    Provaci e in caso di problemi se ne riparla, guardando il codice scritto e analizzando le condizioni.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    non è difficile da capire la mia richiesta.
    attendo risposte migliori.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Loliva Fabio A.
    non è difficile da capire la mia richiesta.
    La tua richiesta non è affatto difficile da capire, ma non è lecita.

    Che tu voglia riorganizzare il tuo codice è palese, tuttavia non è così che si affronta il problema; si tratta di una classe di poche righe, quindi modificarla è abbastanza semplice, ma può essere fatto in milioni di modi, quindi sta a te indicare qual è la difficoltà particolare e specifica che incontri nello svolgere questa attività da solo, visto che qui non facciamo analisi né scrittura di codice conto terzi.

    Hai provato a documentarti un minimo sulla struttura generale di una classe? E hai provato a riorganizzarla, o almeno iniziare a farlo? E come? E se sì, quali difficoltà incontri in particolare?

    Originariamente inviato da Loliva Fabio A.
    attendo risposte migliori.
    Io invece attendo risponde alle domande che ti ho posto, altrimenti si chiude, poiché un minimo di collaborazione da parte tua nella risoluzione del problema, o almeno la capacità di dire quali sono le difficoltà specifiche che riscontri nel fare quanto chiedi, devono essere note ed evidenziate.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Molto probabilmente mi sarò spiegato male, non era mia intenzione appaltare lavori ad html.it. comunque riespongo il mio problema con il codice modificato:

    form1 (form dal quale chiedo i dati da inserire) :

    codice:
    Public Class anagraficaCF
    
            Public Sub btnSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalva.Click
    
    
            If tbxRagioneSociale.Text = String.Empty Then
                MsgBox("Impossibile inserire i dati nell'archivio. Controllare che il campo Ragione Sociale non sia vuoto", MsgBoxStyle.Critical, "Impossibile effettuare l'operazione")
            Else
    
                Dim SQLStatement As String = "INSERT INTO anagraficafornitori(ragioneSociale) VALUES('" & tbxRagioneSociale.Text & "')"
    
                Dim fornitore As New classi.anagraficaClienteFornitore
                fornitore.inserisciFornitore(SQLStatement)
    
            End If
    
        End Sub
    End Class
    e una classe (dove dichiaro una volta per tutte l'operazione di inserimento dati anagrafici nel db(PS DOVREI SPOSTARE ANKE LA QUERY...dopo quando avrò piu dimestichezza))

    codice:
     
    'libreria per usare mysql
    Imports MySql.Data.MySqlClient
    
    Public Class classi
    
        Class anagraficaClienteFornitore
            Sub connessione()
                Dim ServerString As String = "Server=localhost;User Id=root;Password=password;Database=db"
                Dim SQLConnection As MySqlConnection = New MySqlConnection
                SQLConnection.ConnectionString = ServerString
                Try
                    If SQLConnection.State = ConnectionState.Closed Then
                        SQLConnection.Open()
                        'MsgBox("Connessione con il server effettuata con successo")
                    Else
                        SQLConnection.Close()
                        MsgBox("Error. Control connection parameter")
                    End If
                Catch ex As Exception
                    MsgBox(ex.ToString)
                End Try
            End Sub
    
            Public Sub inserisciFornitore(ByRef SQLStatement As String)
                Dim cmd As MySqlCommand = New MySqlCommand
    
                With cmd
                    .CommandText = SQLStatement
                    .CommandType = CommandType.Text
                    .Connection = SQLConnection
                    .ExecuteNonQuery()
                End With
    
                SQLConnection.Close()
                MsgBox("aggiunto con successo")
                SQLConnection.Dispose()
    
            End Sub
    
        End Class
    End Class
    il punto è che mi da errore in quanto non riceve SQLConnection nel Public Sub inseriscifornitori

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    "non riceve" nel senso che non ha accesso all'oggetto SQLConnection visto che è locale alla Sub connessione.

    Devi dichiarare l'oggetto come membro privato della classe, crearlo in

    connessione

    e utilizzarlo altrove nella classe.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Form 1

    codice:
    Public Class anagraficaCF
    
        Public Sub btnSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalva.Click
    
            If tbxRagioneSociale.Text = String.Empty Then
                MsgBox("Impossibile inserire i dati nell'archivio. Controllare che il campo Ragione Sociale non sia vuoto", MsgBoxStyle.Critical, "Impossibile effettuare l'operazione")
            Else
    
                Dim anagrafica As New classi.anagraficaClienteFornitore
    
                anagrafica.inserisci(tbxRagioneSociale.Text)
    
            End If
    
        End Sub
    
    
    
    End Class
    classi

    codice:
    'libreria per usare mysql
    Imports MySql.Data.MySqlClient
    
    Public Class classi
    
        Class anagraficaClienteFornitore
            Public Sub connessione()
    
                Dim ServerString As String = "Server=localhost;User Id=root;Password=password;Database=db"
    
                Dim SQLConnection As MySqlConnection = New MySqlConnection
    
                SQLConnection.ConnectionString = ServerString
                Try
                    If SQLConnection.State = ConnectionState.Closed Then
                        SQLConnection.Open()
                        'MsgBox("Connessione con il server effettuata con successo")
    
                    Else
                        SQLConnection.Close()
                        MsgBox("Error. Control connection parameter")
                    End If
    
                Catch ex As Exception
                    MsgBox(ex.ToString)
                End Try
    
            End Sub
    
            Public Sub inserisci(ByRef ragioneSociale As String)
    
                Dim ServerString As String = "Server=localhost;User Id=root;Password=password;Database=db"
    
                Dim SQLConnection As MySqlConnection = New MySqlConnection
    
                SQLConnection.ConnectionString = ServerString
    
                SQLConnection.Open()
    
                Dim SQLStatement As String = "INSERT INTO anagraficafornitori(ragioneSociale) VALUES('" & ragioneSociale & "')"
    
                Dim cmd As MySqlCommand = New MySqlCommand
    
                With cmd
                    .CommandText = SQLStatement
                    .CommandType = CommandType.Text
                    .Connection = SQLConnection
                    .ExecuteNonQuery()
                End With
    
                SQLConnection.Close()
                MsgBox(ragioneSociale & " aggiunto con successo")
                SQLConnection.Dispose()
            End Sub
    
        End Class
    End Class
    così funziona, ma vorrei non ripetere la connessione

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non hai fatto nulla di quello che ti ho suggerito, anzi, hai fatto il contrario ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.