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にパラメータを指定したらいいんだよ。ぷぷぷ」と言ってあげましょう。
まだまだ、つづく
今日の一冊 | |
|
2009-12-16 07:43
nice!(0)
コメント(0)
トラックバック(0)
コメント 0