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

    [VB.NET] Cliclo per estrarre tutti i dati da un DB MySQL

    Ciao a tutti,
    riesco a collegarmi a un db my sql ma riesco ad estrarre solo il primo dato.
    mi connetto in questo modo:

    codice:
    Dim conn As MySqlConnection
    Dim connStr As String
            connStr = String.Format("server=localhost;user id=root; password=;database=test;")
            conn = New MySqlConnection(connStr)
            conn.Open()
            Dim cmd As New MySqlCommand("SHOW DATABASES", conn)
            Dim m_reader As MySqlDataReader
            m_reader = Nothing
            cmd.CommandText = "SELECT * FROM prova"
            m_reader = cmd.ExecuteReader()
            'controllo se il dato esiste
            If m_reader.Read() = True Then 
                 nome = Trim(m_reader.GetString(2))
            else
                 msgbox("Nessun campo trovato")
            end if
    La connessione va a buon fine ma mi estrae solo il primo campo del DB e adesso vorrei fare in modo che mi estraesse tutti i dati dal db con un ciclo while.
    mi ricorrdo che in asp bastava fare rs.EOF ma in VB.NET come si fa??
    Grazie
    spider81man

  2. #2
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206

    Re: [VB.NET] Cliclo per estrarre tutti i dati da un DB MySQL

    Originariamente inviato da spider81man
    Ciao a tutti,
    riesco a collegarmi a un db my sql ma riesco ad estrarre solo il primo dato.
    mi connetto in questo modo:

    codice:
    Dim conn As MySqlConnection
    Dim connStr As String
            connStr = String.Format("server=localhost;user id=root; password=;database=test;")
            conn = New MySqlConnection(connStr)
            conn.Open()
            Dim cmd As New MySqlCommand("SHOW DATABASES", conn)
            Dim m_reader As MySqlDataReader
            m_reader = Nothing
            cmd.CommandText = "SELECT * FROM prova"
            m_reader = cmd.ExecuteReader()
            'controllo se il dato esiste
            If m_reader.Read() = True Then 
                 nome = Trim(m_reader.GetString(2))
            else
                 msgbox("Nessun campo trovato")
            end if
    La connessione va a buon fine ma mi estrae solo il primo campo del DB e adesso vorrei fare in modo che mi estraesse tutti i dati dal db con un ciclo while.
    mi ricorrdo che in asp bastava fare rs.EOF ma in VB.NET come si fa??
    Grazie
    spider81man
    codice:
    Do while m_reader.read()...
    ecco

  3. #3
    Ciao,
    innanzitutto grazie per la risposta.
    Io ho fatto così:

    codice:
    Dim connStr
                connStr = String.Format("server=localhost;user id=root; password=;database=test;")
                conn = New MySqlConnection(connStr)
                conn.Open()
                Dim cmd As New MySqlCommand("SHOW DATABASES", conn)
                Dim m_reader As MySqlDataReader
                m_reader = Nothing
                cmd.CommandText = "SELECT * FROM magazzino"
                m_reader = cmd.ExecuteReader()
    
                While m_reader.Read() = True
                    conte_bottone = conte_bottone + 1
                    MsgBox(m_reader.GetString(2))
                    bottone.Location = New System.Drawing.Point(280, 272)
                    bottone.Text = m_reader.GetString(2)
                    Controls.Add(bottone)
                End While
    
                If m_reader.Read() = False Then
                    Dim NuovoForm As New Form4
                    NuovoForm.Show()
                End If
    il fatto è che mi entra sia nel while che nell'if cosa strana visto che uno sono l'inverso dell'altro.
    Sai dirmi come mai??

  4. #4
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    Originariamente inviato da spider81man
    Ciao,
    innanzitutto grazie per la risposta.
    Io ho fatto così:

    codice:
    Dim connStr
                connStr = String.Format("server=localhost;user id=root; password=;database=test;")
                conn = New MySqlConnection(connStr)
                conn.Open()
                Dim cmd As New MySqlCommand("SHOW DATABASES", conn)
                Dim m_reader As MySqlDataReader
                m_reader = Nothing
                cmd.CommandText = "SELECT * FROM magazzino"
                m_reader = cmd.ExecuteReader()
    
                While m_reader.Read() = True
                    conte_bottone = conte_bottone + 1
                    MsgBox(m_reader.GetString(2))
                    bottone.Location = New System.Drawing.Point(280, 272)
                    bottone.Text = m_reader.GetString(2)
                    Controls.Add(bottone)
                End While
    
                If m_reader.Read() = False Then
                    Dim NuovoForm As New Form4
                    NuovoForm.Show()
                End If
    il fatto è che mi entra sia nel while che nell'if cosa strana visto che uno sono l'inverso dell'altro.
    Sai dirmi come mai??
    probabilmente perchè il datareader diventa false (EoF) alla fine del while

  5. #5
    Conosci un modo per ovviare a quesa cosa??
    Perchè se metto prima l'if se è false esce dalla if ma non entra nel while.
    Guarda sto impazzendo

  6. #6
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    Originariamente inviato da spider81man
    Conosci un modo per ovviare a quesa cosa??
    Perchè se metto prima l'if se è false esce dalla if ma non entra nel while.
    Guarda sto impazzendo
    1) Non metti l'if
    2) Metti il tutto in un blocco Try ... catch ... end try

    EDIT:
    3) o anche metti un else all'if e ci metti dentro il while

  7. #7
    Scusami come posso fare??
    Ho provato sul libro ma non mi da un esempio che risco a capire

  8. #8
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    Originariamente inviato da spider81man
    Scusami come posso fare??
    Ho provato sul libro ma non mi da un esempio che risco a capire
    Io farei:
    codice:
    Dim connStr
                connStr = String.Format("server=localhost;user id=root; password=;database=test;")
                conn = New MySqlConnection(connStr)
                conn.Open()
                Dim cmd As New MySqlCommand("SHOW DATABASES", conn)
                Dim m_reader As MySqlDataReader
                m_reader = Nothing
                cmd.CommandText = "SELECT * FROM magazzino"
                m_reader = cmd.ExecuteReader()
    If m_reader.HasRows() = true then
                While m_reader.Read()
                    conte_bottone = conte_bottone + 1
                    MsgBox(m_reader.GetString(2))
                    bottone.Location = New System.Drawing.Point(280, 272)
                    bottone.Text = m_reader.GetString(2)
                    Controls.Add(bottone)
                End While
    else
    ' Nessun record risultante
    end if

  9. #9
    Ok adesso funziona alle perfezione GRAZIEEEEEEE
    un'altra cosa :P
    Io apro un form tramite un pulsante.
    Come faccio a fare in modo che:
    1) il nuovo form, chiamiamolo form2, si veda in I° piano, è un form molto + piccolo di quell'altro
    2) che quando chiudo il form2 il form uno si comporti come se stesse su FORM1_ONLOAD.
    Grazie ancora
    spider81man

  10. #10
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    Originariamente inviato da spider81man
    Ok adesso funziona alle perfezione GRAZIEEEEEEE
    un'altra cosa :P
    Io apro un form tramite un pulsante.
    Come faccio a fare in modo che:
    1) il nuovo form, chiamiamolo form2, si veda in I° piano, è un form molto + piccolo di quell'altro
    2) che quando chiudo il form2 il form uno si comporti come se stesse su FORM1_ONLOAD.
    Grazie ancora
    spider81man
    Mah guarda, se ho capito bene, potresti rendere la form1 invisibile all'apertura della form2 e alla sua chiusura rendere nuovamente visibile la form1; io faccio così

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.