VB.NET oledbDataAdapter 填充仅工作一次

问题描述 投票:0回答:1

所以我有一个记录集,我想用它填充两个数据表,但它只填充第一个数据表。

Dim da As New OleDb.OleDbDataAdapter
Dim dt1 As New DataTable
Dim rs1 As New ADODB.Recordset
rs1.Open("select * from table",conn,ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockReadOnly)
da.Fill(dt1, rs1)

rs1.MoveFirst()

da = New OleDb.OleDbDataAdapter
Dim dt2 As New DataTable
da.Fill(dt2, rs1)

所以第一个数据表(dt1)中有数据,但 dt2 是空的,我不知道为什么。我尝试了 MoveFirst() 但它没有改变任何东西

vb.net adodb recordset
1个回答
0
投票

如果您使用的是 VB.Net,而不是 VBA 或 VBScript,则不应该使用旧的 ADODB 类型,例如

RecordSet
。它们仅在向前移植旧代码时为了向后兼容而存在,并且不应用于新的开发。您绝对不能在同一个地方混合搭配旧的 adodb 和新的 ADO.Net。坚持使用 ADO.Net:

Dim dt1 As New DataTable()
Dim dt2 As New DataTable()
Using conn As New OleDb.OleConnection("connection string here"), _
      cmd  As New OleDb.OleDbCommand("select * from table"), _
      da   As New OleDb.OleDbAdataAdapter(cmd)

    ' When using .Fill() you don't even need to call .Open()
    da.Fill(dt1)
    da.Fill(dt2)

End Using
© www.soinside.com 2019 - 2024. All rights reserved.