中年システムエンジニアのオモチャ箱

中年システムエンジニアが初体験のブログ活動。技術情報の備忘録以外も、色々と載せていければと思います。

VB.NET データベースの SELECT 文を実行しよう(SQLServer、Oracle共通化)


【スポンサーリンク】


VB.NET データ プロバイダーを使用しての DB 接続(SQLServer、Oracle共通化)で、VB.NET の開発環境を使用して、SQLServerOracle の接続方法のサンプルプログラムを紹介しました。

 

今回は、実際に SELECT 文の実行をしたいと思います。

SELECT 文の実行も、SQLServerOracle 共通で使用できます!

尚、VB.NET データ プロバイダーを使用しての DB 接続(SQLServer、Oracle共通化)でコーディングしてあることを前提に、下記変数を使用していきますので注意してくださいね。

  • prov
  • cmd

 

 

SQL 文の実行(SQLServerOracle通化

 

ソースコード

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 ServerOracle の接続を共通化し、開発効率があがればと思います。

 

参考にしてもらい、開発の役に立てれば嬉しいです。

 

〔本〕Visual Studio データベース関連の書籍を検索する
 

 

次回は、 VB.NET データベースの INSERT 文を実行しよう(SQLServer、Oracle共通化)で、データベース接続後の INSERT 文の実装方法を紹介したいと思います。