我使用excel表中的数据填充DataSet。我现在需要将此数据插入到具有相同结构的Access数据库中的表中。
惯例将规定我迭代DataTable的行并为每个行进行INSERT查询,但我想知道是否有更有效的方法来实现这一点?也许类似于SQL Server的SqlBulkCopy?
这是我到目前为止的代码:
Dim connection As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath(path) & ";Extended Properties=Excel 12.0;")
Dim adapter = New OleDbDataAdapter("SELECT * FROM [Sheet1$] WHERE EmpID IS NOT NULL", connection)
Dim results = New System.Data.DataSet
connection.Open()
adapter.Fill(results)
connection.Close()
connection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath("~/App_Data/Leaves.accdb"))
`Now, short of a loop, how can I insert results.Tables(0) into my database?
感谢您的帮助。
答案 0 :(得分:1)
您可以使用ADO,例如:
INSERT INTO Table1 ( ADate )
SELECT SomeDate FROM [Excel 8.0;HDR=YES;DATABASE=Z:\Docs\Test.xls].[Sheet1$a1:a4]
连接到Access数据库的位置。如果你想使用整张表,请参考[Sheet1 $]作为你的表,如果你想使用一个命名范围,只需按名称引用它。