DbProviderFactory e fill di una tabella

domenica 21 febbraio 2010 - 00.28

volperubbia Profilo | Senior Member

Ciao a tutti,
sto iniziando ad usare la DbProviderFactory per l'accesso ai dati,
ma qualcosa non mi torna ancora.

Dim DbProviderFactory As DbProviderFactory = DbProviderFactories.GetFactory("System.Data.SqlClient")
Dim objCon As Common.DbConnection = MyBase.Utente.DbProviderFactory.CreateConnection
objCon.ConnectionString = ..........

objCon.Open()
objCon.Close()

Fino a qui funziona, ora però vorrei popoare una tabella.

Dim tbl As New DataTable
Dim ds As DataSet = tbl.DataSet
If (ds Is Nothing) Then ds = New DataSet : ds.Tables.Add(tbl)

objCon.Open()
Using objAdapter As Common.DbDataAdapter = DbProviderFactory.CreateDataAdapter
Dim selectCmd As Common.DbCommand = DbProviderFactory.CreateCommand
selectCmd.CommandText = "SELECT * FROM TABELLA"
selectCmd.Connection = objCon
objAdapter.SelectCommand = selectCmd
objAdapter.Fill(ds)
objCon.Close()
End Using

Non ottengo alcun risultato e neanche un errore, benchè la tabella del db abbia n righe,
probabilmente salto qualche passaggio.

Qualche idea?
Davide

tonyexpo Profilo | Senior Member

fai così:

dim db = DbProviderFactories.GetFactory("System.Data.SqlClient")
dim cn = db.CreateConnection()
cn.ConnectionString=""
dim cm = db.CreateCommand()
cm.CommandText="SELECT * FROM MYTABLE"
cm.Connection=cn
dim da = db.CreateDataAdapter
da.SelectCommand=cm
dim dt as new DataTable

cn.Open()
fa.Fill(dt) ' qui ti popola la tua datatable... il dataset non ti serve a meno che non chiedi più tabelle eventualmente collegate tra di loro
cn.Close()


facci sapere
ciao


Antonio Esposito
MCTS, MCP

http://blogs.dotnethell.it/espositos

volperubbia Profilo | Senior Member

Ciao Antonio,
hai ragione il dataset non serve a nulla.
Alla fine ho risolto cosi:

Private Function GetDataTable(ByVal strSql As String) As DataTable
Dim tbl As DataTable = Nothing
If String.IsNullOrEmpty(strSql) Then Return tbl
Using objAdapter As Common.DbDataAdapter = DbProviderFactory.CreateDataAdapter
objAdapter.SelectCommand = DbProviderFactory.CreateCommand
objAdapter.SelectCommand.CommandType = CommandType.Text
objAdapter.SelectCommand.CommandText = strSql
objAdapter.SelectCommand.Connection = DbProviderFactory.CreateConnection
objAdapter.SelectCommand.Connection.ConnectionString = ConnectionString
tbl = New DataTable
objAdapter.Fill(tbl)
End Using
Return tbl
End Function

Grazie e alla prossima,
Davide
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5