0
将多个记录插入Access数据库与VB.net的最有效方法是什么?将多个记录插入Access DB
我有一个具有多个属性的对象列表,它是INSERT
查询的值,我想知道我可以将它们全部插入在一起,而不是循环遍历对象列表,构建查询字符串并执行查询由非常缓慢的一个。
的我有什么粗糙例如:
For Each Val In ValueList
ValueString = Val.X.ToString & ", "
ValueString += Val.Y.ToString & ", "
ValueString += Val.Z.ToString
SQLValueList.Add(ValueString)
Next
Dim cmd As OleDb.OleDbCommand
Dim strConnection As String
Dim strSql As String = Nothing
strConnection = _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\db.accdb;" & _
"User ID=Admin;Password=;"
For Each ValueString As String In SQLValueList
strSql = "INSERT INTO Results (FldX, FldY, FldZ)" &
"VALUES (" & ValueString & ");"
cmd = New OleDb.OleDbCommand(strSql)
cmd.Connection = New OleDb.OleDbConnection(strConnection)
cmd.Connection.Open()
cmd.ExecuteNonQuery()
Next
我假设有这样做的更好的,更有效的方式,但我一直没能找到它!
感谢您的快速响应!首先,数据是字符串整数和双精度的组合。我试过了你的代码,但是我收到一个错误:“属性访问必须分配给属性或使用它的值。”在'cmd.parameters [n] .value = val'行上我做错了什么? – doovers
正如我所说的,上面的例子假设你的所有字段(FldX,fldY,FldZ)都是数据库中的文本类型。因此,每个参数都是代码中的字符串类型。如果这不是真的,那么你需要使用正确的数据类型。我将为答案添加一个示例 – Steve
嗯,我仍然得到相同的错误...例如'cmd.Parameters [0] .Value =“test”'如果我正确理解你,这是正确的语法还是我错误? – doovers