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...