Lttura record da una tabella Sql Server

domenica 26 marzo 2006 - 11.05

max1850 Profilo | Junior Member

Salve. Uso VB NET 2005, e, da pochissimo, SQL Server Express 2005.
Ho provato a fare una ricerca dei record presenti in una tabella, più o meno adattando il codice che usavo per le tabelle di Access, ma mi esce il seguente errore:
"Errore 91: Object reference not set to an instance of an object."
Cosa significa?
Vi posto il codice di un bottone che dovrebbe leggere i record di una tabella e stamparli a video in delle label:

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
' Controlliamo che il database sia aperto
If Db.State = ConnectionState.Closed Then Db.Open()
' Dichiariamo un'istanza del command sql
Dim SqlCmd As New SqlCommand()
' Creiamo l'istanza che contiene i dati caricati dalla query
Dim SqlLeggi As SqlDataReader
Try
' Assegniamo il database al command
SqlCmd.Connection = Db
' Specifico il tipo di comando
SqlCmd.CommandType() = CommandType.Text
' Assegniamo la query al command
SqlCmd.CommandText = "SELECT * FROM Condomini"

' Eseguiamo la query sql tramite il metodo ExecuteReader
SqlCmd.ExecuteReader()
' Leggiamo i records dal database
While SqlLeggi.Read()
Label1.Text = SqlLeggi.Item("Nome")
Label2.Text = SqlLeggi.Item("Cognome")
Label3.Text = SqlLeggi.Item("Telefono")
End While

'Chiudiamo le istanze
SqlCmd.Dispose()
SqlLeggi.Close()
' Chiudiamo il database
Db.Close()
Catch
appErr.errcode = CType(Err.Number, String)
appErr.errmsg = Err.Description
MessageBox.Show(appErr.errmsg, "Errore N°" + CType(appErr.errcode, String), MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)

End Try
End Sub
---------------------

Sembra che sia tutto giusto ma non va, come mai?

Grazie
Max!
P.S.: se può aiutare, nel codice mi esce un "Warning": "Variable 'SqlLeggi' is used before it has been assigned a value. A null reference exception could result at runtime".
Max!

freeteo Profilo | Guru

ciao,
l'errore sta qui:
>SqlCmd.ExecuteReader()
>While SqlLeggi.Read()

perche l'executereader ti torna 1 reader che tu appoggi sulla variabile SqlLeggi per poi girare.
Se non lo fai,ExecuteReader ti torna 1 reader in memoria e SqlLeggi non è mai inizializzata sul reader che ti torna il Command...
Percio ti basta questa correzione:

SqlLeggi = SqlCmd.ExecuteReader()
While SqlLeggi.Read()
....


ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

max1850 Profilo | Junior Member

Ottimo!
Funziona!

Grazie mille!
Max!

freeteo Profilo | Guru

bene dai,diciamo che era praticamente 1a svista...
ps: accetta la risposta di prima che cosi' marchiamo il thread come risolto...

grazie
ciao.

max1850 Profilo | Junior Member

Ciao!
OK! ho risolto!
Grazie della disponibilità!
Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5