Per estrarre un solo valore dovresti usare il metodo ExecuteScalar dell'oggetto Command.
Comunque per estrarre un Datatable usavo questa (è OleDb ma i concetti sono gli stessi):
codice:
Namespace Database
Public Class OleDbTools
Private _StringaConnessione As String
Public Property StringaConnessione() As String
Get
Return _StringaConnessione
End Get
Set(ByVal Value As String)
_StringaConnessione = Value
End Set
End Property
Private _SQL As String
Public Property SQL() As String
Get
Return _SQL
End Get
Set(ByVal Value As String)
_SQL = Value
End Set
End Property
Private internal_OLEDBCONN As OleDbConnection
Private internal_OLEDBCOMMAND As OleDbCommand
Private internal_OLEDBREADER As OleDbDataReader
Private internal_OLEDBADAPTER As OleDbDataAdapter
Private internal_DATASET As DataSet
Private Sub Connetti()
Try
internal_OLEDBCONN = New OleDbConnection(StringaConnessione)
internal_OLEDBCONN.Open()
Catch ex As OleDbException
internal_OLEDBCONN.Close()
Throw ex
End Try
End Sub
Public Function EstraiDataTable(ByVal strNomeDataTable As String) As DataTable
Connetti()
internal_DATASET = New DataSet
internal_OLEDBADAPTER = New OleDbDataAdapter(_SQL, internal_OLEDBCONN)
Try
internal_OLEDBADAPTER.Fill(internal_DATASET, strNomeDataTable)
Return internal_DATASET.Tables(0)
Catch ex As OleDbException
Throw ex
Return Nothing
Finally
internal_OLEDBCONN.Close()
End Try
End Function
' Restituisce un solo valore (prima riga, prima colonna)
Public Function EstraiValoreSingolo() As String
Connetti()
internal_OLEDBCOMMAND = New OleDbCommand(Me._SQL, internal_OLEDBCONN)
Try
internal_OLEDBREADER = internal_OLEDBCOMMAND.ExecuteScalar()
internal_OLEDBREADER.Read()
Return System.Convert.ToString(internal_OLEDBREADER(0))
Catch ex As OleDbException
Throw ex
Return System.Convert.ToString("")
Finally
internal_OLEDBCONN.Close()
internal_OLEDBCOMMAND.Dispose()
End Try
End Function
End Class
End NameSpace
dandogli le proprietà SQL e StringaConnessione prima.
Esempio:
codice:
Dim myDB as new Database.OleDbTools
myDB.SQL = "SELECT CAMPO1,CAMPO2 FROM TABELLA"
myDB.StringaConnessione = ConfigurationManager.AppSettings("strconn")
Dim dt as New DataTable
dt = myDB.EstraiDataTable("prova")