VB.NET データ プロバイダーを使用しての DB 接続(SQLServer、Oracle共通化)で、VB.NET の開発環境を使用して、SQLServer、Oracle の接続方法のサンプルプログラムを紹介しました。
今回は、実際に SELECT 文の実行をしたいと思います。
SELECT 文の実行も、SQLServer、Oracle 共通で使用できます!
尚、VB.NET データ プロバイダーを使用しての DB 接続(SQLServer、Oracle共通化)でコーディングしてあることを前提に、下記変数を使用していきますので注意してくださいね。
- prov
- cmd
SQL 文の実行(SQLServer、Oracle共通化)
Dim strSql As New System.Text.StringBuilder()
Dim param As DbParameter = Nothing
Dim adapter As DbDataAdapter = Nothing
Dim ds As New DataSet()
'SQL 文の生成
strSql.AppendLine("SELECT *")
strSql.AppendLine("FROM DEPT")
strSql.AppendLine("WHERE PERSON < :PERSON_NUM")
strSql.AppendLine("AND DEPT_ID = :DEPT_ID_STR")
'実行する SQL 文を設定
cmd.CommandText = strSql.ToString
'パラメーターの初期化
cmd.Parameters.Clear()
'変換パラメーターの設定
param = prov.CreateParameter()
param.DbType = DbType.Int32
param.ParameterName = "PERSON_NUM"
param.Value = 5
cmd.Parameters.Add(param)
'
param = prov.CreateParameter()
param.DbType = DbType.String
param.ParameterName = "DEPT_ID_STR"
param.Value = "A100-01"
cmd.Parameters.Add(param)
'アダプターの生成、及び、SQL文の発行
adapter = prov.CreateDataAdapter()
adapter.SelectCommand = cmd
adapter.Fill(ds)
上記ソースプログラムの「SQL 文の生成」ですが、 :PERSON_NUM 、及び、:DEPT_ID_STR の『:』は、Oracle の場合の記述方法となります。
SQL Server では『@』となり、@PERSON_NUM 、及び、@DEPT_ID_STR と記述するので注意してくださいね。
変換パラメーターの設定
DbParameter オブジェクトを使用することで、SQL 文を実行する際の値をパラメーターで設定できます。
パラメーターの設定方法は下記となります。
' パラメーターを設定するオブジェクトを生成
param = prov.CreateParameter()' 変換する値のデータ型を指定
param.DbType = DbType.Int32' 変換する値のパラメーター文字列を指定
param.ParameterName = "PERSON_NUM"' 変換する値を指定
param.Value = 5' 上記設定したパラメーターを追加
cmd.Parameters.Add(param)
簡易的なソースプログラムとなりますので、エラー処理などは記載していません。
このソースプログラムを元にしてクラス化することにより、SQL Server と Oracle の接続を共通化し、開発効率があがればと思います。
参考にしてもらい、開発の役に立てれば嬉しいです。
Visual Basicの絵本 Windowsプログラミングわかる9つの扉
SQLの絵本 第2版 データベースが好きになる新しい9つの扉
次回は、 VB.NET データベースの INSERT 文を実行しよう(SQLServer、Oracle共通化)で、データベース接続後の INSERT 文の実装方法を紹介したいと思います。