SSブログ

VB.NETでDB操作(SQLの組み立て篇) [プログラミング]

前々回、せっかくVisual Basic .NET を使って、Oracleのデータベースへアクセスする方法を調べたので、もう少しメモ。


SQLの組み立て

.NETでDB操作をする時には、
SQL文を OleDbCommand オブジェクトの CommandText プロパティに設定するわけです。

Dim conn As New System.Data.OleDb.OleDbConnection(~略~)

Dim da As New System.Data.OleDb.OleDbDataAdapter

da.SelectCommand = conn.CreateCommand()
da.SelectCommand.CommandText = "select * from TABLE1"   ' ← この部分

ですが、このSQLをきちんと作るのは結構大変です。

da.SelectCommand.CommandText = "select * from TABLE1 where ID='" & id & "'"

上の様にするのは問題外です。

SQLの一部に、他所から持ってきたデータを埋め込む場合は、文字列の連結を使わず、専用の機能を利用します。

Dim sql As String = "select * from TABLE1 where ID=? and CODE=?"

Dim cmd As New System.Data.OleDb.OleDbCommand(sql, conn)

cmd.Parameters.Add("ID", "1000")
cmd.Parameters.Add("CODE", "abcd")

値を埋め込みたい場所に ? と書いたSQLを指定し、Parameters.Add で ? に埋め込む値を指定します。

SQL中の?との対応は、Add を呼び出した順番で決定します。(2回目の Add が、SQLの2つ目の?に対応)
Add の1つ目の引数の値は任意ですが、見やすさと値を再設定する時のことを考えて適切なものを指定しておきましょう。

cmd.Parameters("ID").Value = "2000"

パラメータを指定する利点は、
エスケープしなければいけない文字とかを一切気にする必要がないこと、
パラメータの値を変更してSQLを実行する場合に、キャッシュが聞いて応答が速くなること
があるらしい。

「SQL は、 ' を '' に置き換えないといけないんだじぇ~」と言いながら、一生懸命、エスケープ関数を自作している自称専門家には、「SQLにパラメータを指定したらいいんだよ。ぷぷぷ」と言ってあげましょう。


まだまだ、つづく

[新幹線] 今日の一冊
実例解説 企画・アイデアを生みだす事典

実例解説 企画・アイデアを生みだす事典

  • 作者: 忰田 進一
  • 出版社/メーカー: 明日香出版社
  • 発売日: 1991/11
  • メディア: 単行本

タグ:.net VB.NET DB
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。