質問: new oledb.oledbcommand("select * into [tb01] from [genpon];", cn) com.executenonquery() ------------------------------------ sqlとしては、現テーブルをdropして、select * into を発行すれば希望通りで、上記もその通り動きますが、newでインスタンス作成を繰り返しているのは、やってはいけない事ではないでしょうか? さらに、例えばこのコードの続きとして、for~nextや、do~loopで繰り返しを設け、その中でinsert into を発行しながら、データを登録するような処理を加える場合、このままでは newをループの回数分、繰り返す事になります。 プロシージャの中で、ループなどで複数のsqlを発行する場合、記述として正しい作法がありましたら、教えてください。
回答: それぞれの最後、つまりexecutenonquery()の発行後、dispose()すれば問題ありません。 が、どうせ同じインスタンスを利用するならば、2回目以降はcommandtextプロパティに設定されている クエリを変更して発行、その後dispose()でも良いでしょう。 また、移行ということで、元々問題ないのでしょうが、問題があるようならば プリペアドステートメントによる発行を推奨します。(sqlインジェクション対策) accessはクエリキャッシュ機構はないでしょうから、パフォーマンスは変わらないでしょうけど。 http://msdn.microsoft.com/ja-jp/library/vstudio/yy6y35y8(v=vs.100).aspx