Использование Select Statement из 1 базы данных для вставки в другую базу данных с использованием VB .NET - PullRequest
0 голосов
/ 01 мая 2009

В настоящее время я пишу приложение 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()

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

Ответы [ 3 ]

3 голосов
/ 01 мая 2009

ExecuteNonQuery нельзя использовать для SELECT содержимого из базы данных. Вы должны использовать ExecuteReader и использовать результат в цикле равным , установить параметры оператора INSERT и затем запустить ExecuteNonQuery в этом цикле. Исходя из написанного вами кода, как вы ожидаете, что значения должны быть заполнены в операторе INSERT?

1 голос
/ 01 мая 2009

Вот предложение,

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

INSERT INTO TestTable2
SELECT * FROM TestTable1
0 голосов
/ 01 мая 2009
  1. Вы используете SELECT, чтобы попытаться вернуть строки, но затем вызываете ExecuteNonQuery(), который ничего не возвращает. Вместо этого вы захотите использовать ExecuteReader().
  2. Вероятно, позже вы получите еще одну ошибку, потому что вы INSERT входите в "Table1", но пытаетесь сослаться на поля в "Sample".

Также не связано с ошибкой, но вы ничего не делаете с данными в операторе SELECT, чтобы использовать их в операторе INSERT.

...