codice:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sql$ = ""
'sql = "SELECT Max(id_player) AS Maxid_player FROM player" '==> dà DBNull.Value se la tabella è vuota
sql = "SELECT ID_PLAYER FROM PLAYER" '==> restituisce Nothing con tabella vuota
Dim o As Object = Me.RisultatoAggregazioneSQL(StringaConnessioneTest, sql)
Dim id_player%
If o Is Nothing Then
Me.Response.Write("Nothing
")
ElseIf o Is System.DBNull.Value Then
Me.Response.Write("DBNull
")
Else
Me.Response.Write(o.GetType.ToString & "
")
'qui posso ottenere i_player facendo la giusta conversione di tipo
id_player = CInt(o)
End If
End Sub
'-------------------------------------------------------------------------------------------------
'Restituisce il risultato di una funzione di aggregazione di una istruzione sql
'Esegue la query e restituisce la prima colonna della prima riga nel gruppo
'di risultati restituito dalla query.
'Le colonne o le righe aggiuntive vengono ignorate
'
'restituisce Nothing se non trova valore
'restituisce System.DBNull.Value se trova valore null
'restituisce object se trova valore
'-------------------------------------------------------------------------------------------------
Public Overloads Function RisultatoAggregazioneSQL(ByVal StringaConnessione$, ByVal stringaSQL$) As Object
Dim Connessione As OleDbConnection
Dim Comando As OleDbCommand
Try
Connessione = New OleDbConnection(StringaConnessione)
Connessione.Open()
Comando = New OleDbCommand(stringaSQL, Connessione)
RisultatoAggregazioneSQL = Comando.ExecuteScalar()
Catch er As Exception
Throw
Finally
If (Not (Connessione Is Nothing)) Then Connessione.Close()
End Try
End Function
Studiati un po' il codice. Ogni tanto mi stupisco anch'io. In Access, con una tabella vuota, le select di agregazione restituiscono DBNull, quelle normali, Nothing