Каков наиболее эффективный способ вставки нескольких записей в БД доступа с помощью VB.net?Вставить несколько записей в базу данных доступа
У меня есть список объектов с несколькими свойствами, которые являются значениями для запроса 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