■VB.Netによる開発その3(パラメータを使ったSQLの発行)
前回はSQLを全て文字列で指定していましたが、パラメータを使った方法で
作ってみます。
ExcelVBAでもやりましたがVB.Netではより分かりやすくなっています。
Dim cn As New NpgsqlConnection 'コネクション Dim tn As NpgsqlTransaction 'トランザクション Dim cmd As New NpgsqlCommand 'SQL発行用 Dim i10 As Long '### 接続設定 ### cn.ConnectionString = "Server=[サーバのIPアドレス];Port=[接続に使用するポート];User Id=[ユーザー];Password=[パスワード];Database=[接続するDB名];Preload Reader = true;" '### 処理開始 ### Try '--- 接続 --- cn.Open() Catch ex As Exception MessageBox.Show("エラーが発生しました" & ex.Message) End Try 'トランザクションの開始 tn = cn.BeginTransaction Try '--- INSERT文によるレコードの追加 --- With cmd .Connection = cn .CommandText = "INSERT INTO cm_item (code, name, price, group_code, group_name) VALUES " & _ " (:code,:name,:price,:group_code,:group_name) " .Parameters.Add("code", NpgsqlDbType.Integer) .Parameters.Add("name", NpgsqlDbType.Varchar) .Parameters.Add("price", NpgsqlDbType.Numeric) .Parameters.Add("group_code", NpgsqlDbType.Integer) .Parameters.Add("group_name", NpgsqlDbType.Varchar) 'プロパティから値をセットする .Parameters.Item("code").Value = 10 .Parameters.Item("name").Value = "トマトジュース" .Parameters.Item("price").Value = 120 .Parameters.Item("group_code").Value = 1 .Parameters.Item("group_name").Value = "ジュース" i10 = .ExecuteNonQuery System.Diagnostics.Debug.WriteLine(i10.ToString & "件追加しました") End With 'tn.Rollback() 'ロールバック tn.Commit() 'コミット '--- 切断 --- cn.Close() MessageBox.Show("切断しました。") Catch ex As Exception MessageBox.Show("エラーが発生しました" & ex.Message) tn.Rollback() 'ロールバック End Try
●SQL発行
.CommandText = "INSERT
INTO cm_item (code, name, price, group_code, group_name) VALUES " &
_
" (:code,:name,:price,:group_code,:group_name)
"
パラメータとして扱いたい項目を:codeのようにコロンを先につけてsqlの文字列を作成します。
.Parameters.Add("code",
NpgsqlDbType.Integer)
コマンドにパラメータを追加します。ExcelVBAと違って?ではなく文字列で指定出来るのでわかりやすいです。
.Parameters.Item("code").Value
=
10
値のセットはこのようになります。
SQLの定義、パラメータの追加、値のセットで同じ文字列を指定するので分かりやすいです。
プログラムを作る時はこちらが良さそうです。
トップへ戻る