La prima soluzione corregge il codice, la seconda soluzione mostra come recuperare un unico dato
codice:
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
' Creo un oggetto connection, command e datareader del namespace OleDB
Dim cmd As OleDbCommand
Dim dr As OleDbDataReader
Dim atletiTOT As Integer
Dim str As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\dati\test\test.mdb"
' Apro la connessione
Using cn As New OleDbConnection(str)
cn.Open()
' Lancio una query nell'oggetto commando di OleDB
cmd = New OleDbCommand("SELECT COUNT(*) AS Expr1 FROM campi where 1=1", cn)
' Eseguo la query in un datareader
dr = cmd.ExecuteReader()
Dim HasRows As Boolean = dr.Read
If HasRows Then
' Mostro i dati a video
atletiTOT = CInt(dr("Expr1"))
Response.Write(atletiTOT & "
")
End If
End Using
End Sub
Protected Sub Button2_Click(sender As Object, e As System.EventArgs) Handles Button2.Click
' Creo un oggetto connection, command e datareader del namespace OleDB
Dim atletiTOT As Integer
Dim str As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\dati\test\test.mdb"
' Apro la connessione
Using cn As New OleDbConnection(str)
cn.Open()
' Lancio una query nell'oggetto commando di OleDB
Dim cmd As New OleDbCommand("SELECT COUNT(*) FROM campi where 1=1", cn)
' recupero il primo campo del primo record della query
atletiTOT = CInt(cmd.ExecuteScalar())
' Mostro i dati a video
Response.Write(atletiTOT & "
")
End Using
End Sub
SEMPRE E COMUNQUE l'apertura della connessione deve essere seguita dalla sua chiusura che si ottiene non "facendo pulizia" ma usando il costrutto using oppure il costrutto Try-Finally