Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    36

    [Vb.net] retrieving dati lentissimo su Mysql

    Sto scrivendo un applicazione Vb.Net interfacciata a Mysql.

    Il problema che comincio a vedere, sviluppando, è che l'applicazione è lenta nel recupero dei dati.
    Sapendo che sono un programmatore VB6, e che questa è la prima App in .net , vi prego di essere clementi

    Questa ad esempio è la routine che uso per accedere ai dati e popolare una DGview:
    codice:
    codice:
      Sub creadata()
            Dim dt As New DataTable("Richieste")
            Dim dc1 As New DataColumn("Id", GetType(Integer))
            Dim dc2 As New DataColumn("id_utente", GetType(Integer))
            Dim dc3 As New DataColumn("Nome", GetType(String))
            Dim dc4 As New DataColumn("Titolo", GetType(String))
            Dim dc5 As New DataColumn("Data", GetType(Date))
            dt.Columns.Add(dc1)
            dt.Columns.Add(dc2)
            dt.Columns.Add(dc3)
            dt.Columns.Add(dc4)
            dt.Columns.Add(dc5)
    
            Dim stringasql As String
            Dim objcomm As MySqlCommand
            Dim m_reader As MySqlDataReader
            Apriconnessione()
            stringasql = "SELECT id_utente,data_ins,titolo,id FROM richieste where id_categoria=" & id_prima_categoria & " ORDER by data_ins DESC"
            objcomm = New MySqlCommand(stringasql, conn)
            m_reader = objcomm.ExecuteReader
            m_reader.Read()
            While m_reader.Read
                Dim dr As DataRow = dt.NewRow
                dr("Id") = m_reader("id")
                dr("id_utente") = m_reader("id_utente")
                dr("titolo") = m_reader("titolo")
                dr("data") = m_reader("data_ins")
                dr("nome") = TrovaUserNameDaId(m_reader("id_utente"))
                dt.Rows.Add(dr)
            End While
            m_reader.Close()
            DataGridView1.DataSource = dt
        End Sub
    Il popolamento richiede anche 5 secondi per visualizzare dieci records...
    Sbaglio qualcosa?

    -----
    Facendo debug barbaro ( f8 a manetta )
    mi sono accorto che perdo in media un secondo sull'apertura della seconda connessione nella funzione TROVAUSERNAMEDAID
    codice:
    codice:
        Public Function TrovaUserNameDaId(ByVal id As Integer) As String
            Dim conn2 As MySqlConnection = New MySqlConnection()
            conn2.ConnectionString = "Data Source=mysql.[privacy].org;Database=ytchat;User ID=akuma;Password=[privacy]; Allow Zero Datetime=True"
            Dim query As String = "SELECT login FROM anag_users where user_id=" & id
            conn2.Open()
            Dim cmd As New MySqlCommand(query, conn2)
            Dim reader As MySqlDataReader
    
            reader = cmd.ExecuteReader()
    
            If reader.HasRows = True Then
                reader.Read()
                TrovaUserNameDaId = reader.GetString("login").Trim
            Else
                TrovaUserNameDaId = 0
            End If
            reader.Close()
            conn2.Close()
            conn2.Dispose()
        End Function
    magari può servire...

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    36
    io non voglio fare polemica inutile...
    però, dato che ho ricevuto risposta su un altro forum, questa voglio dirvela...
    possibile che nessuno si sia accorto che facevo una select per ogni Item,
    quando invece avrei dovuto fare una select unica che raccogliesse tutti gli items?

    Mah.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da akuma
    io non voglio fare polemica inutile...
    però, dato che ho ricevuto risposta su un altro forum, questa voglio dirvela...
    possibile che nessuno si sia accorto che facevo una select per ogni Item,
    quando invece avrei dovuto fare una select unica che raccogliesse tutti gli items?

    Mah.
    Polemica inutile e fastidiosa.

    Hai scritto su Masterdrive ieri alle 21.05 e *dopo* qui alle 22:05.

    Ti lamentavi su Masterdrive delle poche risposte avute qui ma scrivevi anche qui un'ora dopo.

    Non solo è un comportamento poco corretto ma parti anche con questa polemica ...

    In un forum non si deve rispondere *obbligatoriamente*.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da akuma
    io non voglio fare polemica inutile...
    però, dato che ho ricevuto risposta su un altro forum, questa voglio dirvela...
    possibile che nessuno si sia accorto che facevo una select per ogni Item,
    quando invece avrei dovuto fare una select unica che raccogliesse tutti gli items?
    Caro utente, qui ognuno legge e risponde a quello che vuole, quando vuole e se ha la possibilità e/o il tempo di farlo.

    Mi fa piacere che tu, postando su tanti altri forum, abbia finalmente trovato la risposta alla tua domanda, ma risparmia questi inutili interventi polemici in futuro.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

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.