2009-05-01 16 views
0

Ich schreibe gerade eine VB .NET-Anwendung, wo ich versuche, 1 Datenbank zu öffnen, erstellen Sie eine Select-Anweisung und dann die Ergebnisse in eine andere Datenbankdatei mit Microsoft Access-Datenbank 2003.Verwenden von Select-Anweisung aus 1 Datenbank zum Einfügen in eine andere Datenbank mit VB .NET

der Code scheint bei der Ausführung der Anweisung zu stoppen cmdJetDB.ExecuteNonQuery()

ich den folgenden Code verwenden:

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() 

Frage: Was ist es, dass ich nicht tue. Ich habe beide Verbindungen geöffnet, meine beiden SQL-Anweisungen angegeben, funktioniert aber immer noch nicht. Ich muss diese Anwendung wirklich funktionieren lassen. Bitte helfen .........

Antwort

3

ExecuteNonQuery kann nicht verwendet werden, um SELECT Zeug aus einer Datenbank. Sie sollten ExecuteReader verwenden und das Ergebnis in einer Schleife zu verwenden, die Parameter der INSERT-Anweisung festlegen und dann ExecuteNonQuery in dieser Schleife ausführen. Wie würden Sie von dem Code, den Sie geschrieben haben, ausgehen, dass die Werte in der INSERT-Anweisung aufgefüllt werden sollten?

0
  1. Sie verwenden SELECT zu versuchen Reihen zurück, aber dann ExecuteNonQuery() Aufruf, die nichts zurückgibt. Sie möchten stattdessen ExecuteReader() verwenden.
  2. Sie werden wahrscheinlich später einen anderen Fehler bekommen, weil Sie in "Table1" sind, aber versuchen, Felder in "Sample" zu referenzieren.

auch in keinem Zusammenhang mit dem Fehler, aber sie tun nichts mit den Daten in der SELECT Aussage in der INSERT Anweisung zu verwenden. Hier

1

ist ein sugestion,

Wenn die Spalten Sie retriving die gleiche Art wie die Spalten haben Sie einfügen (basicaly Sie keine Konvertierung zu machen und/oder Transformationen) tun, um eine einzelne Abfrage, die dies tut.

INSERT INTO TestTable2 
SELECT * FROM TestTable1 
Verwandte Themen