2009-05-01 9 views
0

現在、1データベースを開き、select文を作成して別のデータベースファイルに結果を投稿しようとしているVB .NETアプリケーションを作成しています。1データベースからSelect文を使用してVB .NETを使用して別のデータベースに挿入する

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

質問:それは何である私はやっておりませんMicrosoft Accessデータベース2003

コードは、私は次のコードを使用してい声明でcmdJetDB.ExecuteNonQuery()

の実行を停止するようです。私は両方の接続を開き、私の2つのSQLステートメントを述べましたが、それでもまだ動作していません。私は本当にこのアプリケーションを動作させる必要があります。助けてください.........

答えて

3

ExecuteNonQueryは、SELECTデータベースには使用できません。 ExecuteReaderを使用し、INSERTステートメントのループに設定し、そのループ内でExecuteNonQueryを実行する必要があります。あなたが書いたコードから、値がINSERTステートメントに入力されるはずです。

0
  1. SELECTを使用して行を返しますが、何も返さないExecuteNonQuery()を呼び出します。代わりにExecuteReader()を使用します。
  2. "Table1"にINSERT、 "Sample"のフィールドを参照しようとしているので、後で別のエラーが発生する可能性があります。
エラーとは無関係のまた

、しかし、あなたはINSERT文でそれを使用するSELECT文のデータで何もしていません。あなたがretrivingされる列は、あなたが(あなたが任意の変換および/または変換を行っていないBasicaly)を挿入されている列と同じ型を持っている場合はここ

1

は暗示、

でこれを行い、単一のクエリを実行します。

INSERT INTO TestTable2 
SELECT * FROM TestTable1 
関連する問題