Quantcast
Channel: OKWAVE 最新質問(Visual Basic/257)【本日】
Viewing all articles
Browse latest Browse all 6510

SQLを連続発行する時の正しい(?)書き方は?

$
0
0
Microsoft Visual Basic 2010 Express の質問です。 ExcelVBAや、AccessVBAで作成したプログラムを、VBに移そうと思っています。 ネットや本のサンプルを、自分のやりたいことに修正しつつ、一応、動作としては希望通りなのですが、元々VBAで簡易に作ったものだけに、本来なら注意すべきインスタンスの管理などがおざなりになっています。 動作は一応正常ですが、果たしてこれで良いのか不安でもありますので質問させていただきます。 大抵の本やサンプルには、複数のSQLを連続で発行するようなものは載っていませんが、いくつものSQLを順次発行していく処理をする時は、どのように記述するのが正しいでしょうか? 例えば、Access2010データベース、C:\test.accdb には、別のテーブルからリンクしたテーブル genpon があるとします。これをコピーしたテーブル、tb01を作る場合、 ------------------------------------ Dim com As OleDb.OleDbCommand Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection( _ "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=C:\test.accdb;") cn.Open() ''現在のデータを削除 com = New OleDb.OleDbCommand("DROP TABLE [tb01];", cn) com.ExecuteNonQuery() ''現在のデータを削除 com = New OleDb.OleDbCommand("SELECT * INTO [tb01] FROM [genpon];", cn) com.ExecuteNonQuery() ------------------------------------ SQLとしては、現テーブルをDROPして、SELECT * INTO を発行すれば希望通りで、上記もその通り動きますが、NEWでインスタンス作成を繰り返しているのは、やってはいけない事ではないでしょうか? さらに、例えばこのコードの続きとして、FOR~NEXTや、DO~LOOPで繰り返しを設け、その中でINSERT INTO を発行しながら、データを登録するような処理を加える場合、このままでは NEWをループの回数分、繰り返す事になります。 プロシージャの中で、ループなどで複数のSQLを発行する場合、記述として正しい作法がありましたら、教えてください。

Viewing all articles
Browse latest Browse all 6510

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>