Использование Выберите заявление из базы данных 1 для вставки в другую базу данных с помощью VB .NET

Я в настоящее время пишу VB .NET приложение, где я пытаюсь открыть 1 базу данных, создать выберите заявление, а затем разместить результаты в другой файл базы данных с помощью базы данных Microsoft Access 2003.

Код, кажется, прекратить выполнение на заявление cmdJetDB.ExecuteNonQuery()

Я использую следующий код:

Dim conn1 As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data source=C:\Sample.mdb")

Dim conn2 As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data source=C:\db2.mdb")
conn1.Open()
conn2.Open()
Dim mySelectQuery As String 
mySelectQuery = "SELECT Sample.LANE_ADDR, Sample.LANE_DT, Sample.LANE_TM, Sample.LANE_SPEED FROM (Sample) WHERE ((Sample.LANE_ADDR) = '164.909' OR (Sample.LANE_ADDR) = '164.909' AND Sample.LANE_DT BETWEEN #4/4/2003# AND #4/5/2003#)"
Dim cmdJetDB As New OleDbCommand(mySelectQuery, conn1)
cmdJetDB.ExecuteNonQuery()

Dim cmdInsert As String
cmdInsert = "Insert INTO Table1 (Sample.LANE_ADDR, Sample.LANE_TM,Sample.LANE_SPEED) VALUES ('164.909', '00:12:30' , '30' )"
Dim cmdJetDB2 As New OleDbCommand(cmdInsert, conn2)
cmdJetDB2.ExecuteNonQuery()

conn2.Close()
conn1.Close()

Вопрос: Что это такое, что я не делаю. Я открыл обе связи, заявил, что мои два заявления S'L, но он все еще не работает. Мне действительно нужно, чтобы это приложение работает. Пожалуйста, помогите .........

Ответ на: "Использование Выберите заявление из базы данных 1 для вставки в другую базу данных с помощью VB .NET"

Количество ответов:3

ExecuteNonQuery cannot be used to не может быть использован для SELECT stuff from a database. You should use вещи из базы данных. Вы должны использовать ExecuteReader and use the result in a loop to и использовать результат в цикле, чтобы установить параметры из INSERT statement and then run заявление, а затем запустить "--17-" в этом цикле. Из кода, который вы написали, как вы ожидаете, что значения должны быть заселены в INSERT statement? заявление?

  1. Вы используете SELECT to try to return rows, but then calling , чтобы попытаться вернуть строки, но затем звоните ExecuteNonQuery(), which returns nothing. You'll want to use , который ничего не возвращает. Вы хотите использовать ExecuteReader() instead. вместо.
  2. Вы, вероятно, получите еще одну ошибку позже, потому что вы INSERTing into "Table1" but trying to reference fields in "Sample". ING в "Таблица1", но пытается ссылаться поля в "Образец".

Также не имеет отношения к ошибке, но вы ничего не делаете с данными в SELECT statement to use it in the заявление, чтобы использовать его в INSERT statement. заявление.

Вот sugestion,

Если столбцы вы retriving имеют тот же тип, как столбцы вы вставляете (Basicaly вы не делаете каких-либо преобразований и / или преобразований) сделать один запрос, который делает это.

INSERT INTO TestTable2
SELECT * FROM TestTable1