+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Connessione MySql

  1. #1
    ljt
    ljt non è in linea Scolaretto
    Post
    166

    Connessione MySql

    Salve ragazzi,

    eccomi di nuovo a chiedervi aiuto.

    Sto cercando di capire come funziona la connessione MySQL

    Cosa ho fatto:
    Ho scaricato i driver MySQL dal sito Oracle
    L'ho installati
    Ho importato la dll MySql.Data.dll nel progetto
    Ho scritto i comandi per la connessione:
    codice:
        Public cMysql As MySqlClient.MySqlConnection
        Public sMySql As String = "Server=1.1.1.1;Port=1234;Database=MioDatabase;Uid=Utente;Pwd=Password;"
    …………
    
        Public Sub Apri_Connessione_MySql(ByRef Mysqlconn As MySqlClient.MySqlConnection, ByVal MysqlStr As String)
               Mysqlconn.ConnectionString = MysqlStr
    
            Try
                If Mysqlconn.State = Data.ConnectionState.Closed Then
                    Mysqlconn.Open()
                End If
            Catch
                ScriviFile(":" & DateTime.Now & " : ERRORE 20 Impossibile aprire la connessione al database Mysql")
            End Try
        End Sub
    
        Public Sub Chiudi_Connessione_Mysql(ByRef Mysqlconn As ADODB.Connection)
            Mysqlconn.Close()
        End Sub
    E fin qui tutto ok.
    Adesso vorrei leggere dal database:
    codice:
            Dim CMD As New MySqlClient.MySqlConnection
            Dim SQL As String = ""
            Dim RD As MySqlClient.MySqlDataReader
    
          Try
                Apri_Connessione_MySql(cMysql, sMySql)
                CMD.ConnectionString = cMysql.ConnectionString
    
                SQL = "select * from " & miatabella & " "
                SQL = SQL & "where campo1 = 'true'"
    
                CMD.ConnectionString = SQL
                RD = CMD...…..
    E qui non riesco a capire come fare per far si che venga letto i database.

    Tenete conto che sto cercando di adattare il codice ripreso per effettuare connessioni a informix, postgres e Microsoft SQL. Questo per cercare di mantenere un certo standard nei miei programmi.

    Per le suddette connessioni normalmente scrivo:
    codice:
    RD = CMD.ExecuteReader
    Le mie domande:
    Cosa devo aggiungere per eseguire la query dopo CMD?
    Quello che ho fatto fino ad esso è corretto, oppure sto proprio sbagliando approccio?

    Grazie di nuovo e prometto che leggero attentamente tutte le vostre riposte…


  2. #2
    ljt
    ljt non è in linea Scolaretto
    Post
    166
    Ho risolto l'arcano.
    Il problema è il connettore ripreso dal sito di Oracle.
    A quanto pare non è compatibile con Vb.net.
    Così ho preso una strada diversa: NUGET
    Li ho trovato quello corretto e a quel punto è andato tutto ok.

    Grazie e alla prossima.

  3. #3
    Ferrari_and non è in linea Scolaretto
    Post
    136
    Il connettore ripreso sul sito web oracle è compatibile con la piattaforma .net
    del codice di esempio postato mi sembra ci sia un po di confusione tra connessione alla base dati e recupero delle informazioni in essa contenuta.

    Informazioni che solitamente vanno poste in una collezione, struttura o recordset che è una cosa diversa dalla connessione.

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,387
    Blogs
    5
    Concordo con Ferrari ... hai scritto un codice che ha poco senso ... forse hai trovato un esempio corretto e pensi che l'altra strada sia corretta ...
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  5. #5
    ljt
    ljt non è in linea Scolaretto
    Post
    166
    Sinceramente uso un simil codice per le connessioni ad altri database con successo. Ma questo non esclude che quello che utilizzo possa essere errato.
    Il problema che ho avuto con oracle non era tanto sulla sintassi, quanto sul fatto (molto strano già capitato in passato) che nel momento dell'esecuzione del codice (f5) tutto quello che si riferiva a myslq veniva segnato come errore.
    Cambiato il connettore ripreso dal Nuget tutto a iniziato a funzionare alla grande.
    Comunque posto il codice che uso adesso così mi potete dare un consiglio:
    Per aprire e chiudere la connessione uso all'interno di un modulo
    codice:
       Public Sub Apri_Connessione_MySql(ByRef Mysqlconn As MySqlConnection, ByVal MysqlStr As String)
            Mysqlconn = New MySqlConnection
            Mysqlconn.ConnectionString = MysqlStr
    
            Try
                If Mysqlconn.State = Data.ConnectionState.Closed Then
                    Mysqlconn.Open()
                End If
            Catch
                ScriviFile(":" & DateTime.Now & " : ERRORE 25 Impossibile aprire la connessione al database Mysql. Verificare la rete")
                ScriviFile("+-------------------------------------------------------------------------------------------+")
            End Try
        End Sub
    Public Sub Chiudi_Connessione_Mysql(ByRef Mysqlconn As MySqlConnection)
            Mysqlconn.Close()
        End Sub
    Mentre per l'utilizzo del database (in questo caso solo lettura)
    codice:
          Dim CMD As New MySqlCommand
          Dim SQL As String = ""
    
           Apri_Connessione_MySql(cMysql, sMySql)
           CMD.Connection = cMysql
    
    SQL = "select * from miodatabase"
                CMD.CommandText = SQL
                CMD.ExecuteNonQuery()
    
    -------ALTRE ISTRUZIONI-------
    
            Chiudi_Connessione_Mysql(cMysql)
    Aspetto i vostri consigli.

    Grazie mille



    [/code]

  6. #6
    Ferrari_and non è in linea Scolaretto
    Post
    136
    Quali consigli vuoi?
    Nell' ultimo esempio usi 2 oggetti diversi uno è una connection il secondo è un sql Command che si appoggio sul connection aperta.
    Anche i driver oracle funzionano così con sintassi diversa ma il principio è lo stesso.

    Per gli errori in fase di esecuzioni c' è da vedere che errore era. Certo che se provi ad acquisire dei record su una oggetto che non lo prevede ...

  7. #7
    Dev-01 non è in linea Scolaretto
    Post
    484
    Se ti venivano segnalati gli errori relativi le dichiarazioni di oggetti MySQL vuol dire che la soluzione aveva perso il riferimento alla libreria 'MySQL.Data' (sempre che tu lo abbia costituito) o che non avevi dichiarato il relativo 'Imports' all'interno dei documenti coinvolti.

    Escluderei la seconda ipotesi per via della non segnalazione di errori dopo l'installazione del pacchetto, tuttavia può essere (non ne sono sicuro) che l'inclusione dello stesso all'interno del progetto ne renda la direttiva 'Imports' superflua.

  8. #8
    ljt
    ljt non è in linea Scolaretto
    Post
    166
    Quote Originariamente inviato da Dev-01 Visualizza il messaggio
    Se ti venivano segnalati gli errori relativi le dichiarazioni di oggetti MySQL vuol dire che la soluzione aveva perso il riferimento alla libreria 'MySQL.Data' (sempre che tu lo abbia costituito) o che non avevi dichiarato il relativo 'Imports' all'interno dei documenti coinvolti.

    Escluderei la seconda ipotesi per via della non segnalazione di errori dopo l'installazione del pacchetto, tuttavia può essere (non ne sono sicuro) che l'inclusione dello stesso all'interno del progetto ne renda la direttiva 'Imports' superflua.
    La libreria di MySQL l'ho importata nei riferimenti e anche tramite import nel progetto (anche se superfluo)
    Quello che posso aggiungere è che l'ho provata in vb.net 2015 ed ho avuto il solito risultato.In passato mi è già successo per le dll di postgres. Solito problema. Nel momento della scrittura del codice non veniva segnalato nessun errore. Solo nel momento dell'esecuzione saltavano fuori sottolineati di rosso. Anche lì, sostituita la libreria non ho avuto più problemi.
    Sinceramente penso anche io che sia un problema di perdita di riferimento alla libreria MySQL.

  9. #9
    ljt
    ljt non è in linea Scolaretto
    Post
    166
    Quote Originariamente inviato da Ferrari_and Visualizza il messaggio
    Quali consigli vuoi?
    Nell' ultimo esempio usi 2 oggetti diversi uno è una connection il secondo è un sql Command che si appoggio sul connection aperta.
    Dunque potrei usare un oggetto solo?

  10. #10
    Ferrari_and non è in linea Scolaretto
    Post
    136
    No ne servono sempre 2 uno per la connessione e uno che contenga i dati recuperati su quella connessione (se devi leggere e manipolare i dati).

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi