有没有使用 vb.net 更新访问权限 table 的快速方法?
Is there a quick way to update an access table using vb.net?
我正在尝试将数据table 从我设置的 vb.net 表单复制到访问数据库中。我正在使用另一个用户 (Casbar27, Records added to ms access database with vb 2010 not saving) 发布的一段代码(有一些改动)。
Back_EndDataSet.tblTest.Clear()
Dim adapter As New Back_EndDataSetTableAdapters.tblTestTableAdapter
Dim rowCode As DataRow = Back_EndDataSet.tblTest.NewtblTestRefreshxinRow
For Each row As DataRow In source.Rows
adapter.Fill(Back_EndDataSet.tblTest)
rowCode.Item(0) = row.Item(0)
rowCode.Item(1) = row.Item(1)
rowCode.Item(2) = row.Item(2)
rowCode.Item(3) = row.Item(3)
rowCode.Item(4) = row.Item(4)
rowCode.Item(5) = row.Item(5)
rowCode.Item(6) = row.Item(6)
rowCode.Item(7) = row.Item(7)
rowCode.Item(8) = row.Item(8)
rowCode.Item(9) = row.Item(9)
Back_EndDataSet.tblTest.AddtblTestRow(rowCode)
adapter.Update(Back_EndDataSet.tblTest)
Next
虽然这行得通,但速度很慢,如果 运行 多次,它会生成多个相同的记录。我希望它在开始时擦除访问 table 并重写它,最好在一分钟内完成。有什么建议吗?
根据@Gord Thompson 的建议,我写了一个 OleDbCommand
来删除 table,并决定继续使用 OleDbCommand
重写我的填充方法。效果很好,完成速度加快,我不再有重复记录。谢谢戈德!
Private Sub UpdateDataBase(ByVal source As DataTable)
Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= H:\AppDev\Visual Studio 2010\Projects\RawFixerTest1\Raw Fixer Back End.accdb")
Dim cmdClr As New OleDbCommand
Dim cmdFill As New OleDbCommand
Dim i = 0
con.Open()
cmdClr.CommandText = "DELETE * FROM tblTestRefreshxin"
cmdClr.Connection = con
cmdClr.ExecuteNonQuery()
cmdFill.Connection = con
For Each row As DataRow In source.Rows
cmdFill.CommandText = "INSERT INTO tblTestRefreshxin (numCode, featDesc, alphaCode, clientCode, DTMexclude, attrCode1, attrCode2, attrCode3, attrCode4, lineToPrev) VALUES(" & "'" & row.Item(0) & "','" & row.Item(1) & "','" & row.Item(2) & "','" & row.Item(3) & "','" & row.Item(4) & "','" & row.Item(5) & "','" & row.Item(6) & "','" & row.Item(7) & "','" & row.Item(8) & "','" & row.Item(9) & "')"
cmdFill.ExecuteNonQuery()
Next
con.Close()
End Sub
我正在尝试将数据table 从我设置的 vb.net 表单复制到访问数据库中。我正在使用另一个用户 (Casbar27, Records added to ms access database with vb 2010 not saving) 发布的一段代码(有一些改动)。
Back_EndDataSet.tblTest.Clear()
Dim adapter As New Back_EndDataSetTableAdapters.tblTestTableAdapter
Dim rowCode As DataRow = Back_EndDataSet.tblTest.NewtblTestRefreshxinRow
For Each row As DataRow In source.Rows
adapter.Fill(Back_EndDataSet.tblTest)
rowCode.Item(0) = row.Item(0)
rowCode.Item(1) = row.Item(1)
rowCode.Item(2) = row.Item(2)
rowCode.Item(3) = row.Item(3)
rowCode.Item(4) = row.Item(4)
rowCode.Item(5) = row.Item(5)
rowCode.Item(6) = row.Item(6)
rowCode.Item(7) = row.Item(7)
rowCode.Item(8) = row.Item(8)
rowCode.Item(9) = row.Item(9)
Back_EndDataSet.tblTest.AddtblTestRow(rowCode)
adapter.Update(Back_EndDataSet.tblTest)
Next
虽然这行得通,但速度很慢,如果 运行 多次,它会生成多个相同的记录。我希望它在开始时擦除访问 table 并重写它,最好在一分钟内完成。有什么建议吗?
根据@Gord Thompson 的建议,我写了一个 OleDbCommand
来删除 table,并决定继续使用 OleDbCommand
重写我的填充方法。效果很好,完成速度加快,我不再有重复记录。谢谢戈德!
Private Sub UpdateDataBase(ByVal source As DataTable)
Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= H:\AppDev\Visual Studio 2010\Projects\RawFixerTest1\Raw Fixer Back End.accdb")
Dim cmdClr As New OleDbCommand
Dim cmdFill As New OleDbCommand
Dim i = 0
con.Open()
cmdClr.CommandText = "DELETE * FROM tblTestRefreshxin"
cmdClr.Connection = con
cmdClr.ExecuteNonQuery()
cmdFill.Connection = con
For Each row As DataRow In source.Rows
cmdFill.CommandText = "INSERT INTO tblTestRefreshxin (numCode, featDesc, alphaCode, clientCode, DTMexclude, attrCode1, attrCode2, attrCode3, attrCode4, lineToPrev) VALUES(" & "'" & row.Item(0) & "','" & row.Item(1) & "','" & row.Item(2) & "','" & row.Item(3) & "','" & row.Item(4) & "','" & row.Item(5) & "','" & row.Item(6) & "','" & row.Item(7) & "','" & row.Item(8) & "','" & row.Item(9) & "')"
cmdFill.ExecuteNonQuery()
Next
con.Close()
End Sub