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

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

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


【スポンサーリンク】


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

 

VB.NET データベースの SELECT 文を実行しよう(SQLServer、Oracle共通化)で、接続したデータベースから、データの抽出(SELECT 文の実行)の接続方法のサンプルプログラムを紹介しました。

 

今回は、INSERT 文を実行し、データの新規追加を実施したいと思います。

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

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

  • prov
  • cmd

 

 
INSERT 文の実行(SQLServerOracle通化

 

ソースコード

Dim strSql As New System.Text.StringBuilder()
Dim param As DbParameter = Nothing
Dim trn As DbTransaction = Nothing

 

'SQL文の生成
strSql.AppendLine("INSERT INTO DEPT (")
strSql.AppendLine(" DEPT_ID")
strSql.AppendLine(",PERSON")
strSql.AppendLine(") VALUES (")
strSql.AppendLine(" :DEPT_ID_STR")
strSql.AppendLine(", :PERSON_NUM")
strSql.AppendLine(")")

 

'実行するSQL文の設定
cmd.CommandText = strSql.ToString

 

'パラメーターの初期化
cmd.Parameters.Clear()

 

'変換パラメーターの設定
param = prov.CreateParameter()
param.DbType = DbType.String
param.ParameterName = "DEPT_ID_STR"
param.Value = "A100-01"
cmd.Parameters.Add(param)
'
param = prov.CreateParameter()
param.DbType = DbType.Int32
param.ParameterName = "PERSON_NUM"
param.Value = 5
cmd.Parameters.Add(param)

 

'トランザクションの開始
trn = cmd.Connection.BeginTransaction()
cmd.Transaction = trn

 

'INSERT文を実行
cmd.ExecuteNonQuery()

 

'成功した場合、トランザクションをコミット
trn.Commit()

 

''失敗した場合、トランザクションロールバック
'trn.Rollback()

 

上記ソースプログラムのSQL 文の生成」ですが、 :PERSON_NUM 、及び、:DEPT_ID_STR の『:』は、Oracle の場合の記述方法となります。

SQL Server では『@』となり、@PERSON_NUM 、及び、@DEPT_ID_STR と記述するので注意してくださいね。

 

また、データの更新ではトランザクションという概念が存在します。

原則、下記のような手順でデータの更新を実行します。

  1. トランザクションの開始
    下記を実行します。
    trn = cmd.Connection.BeginTransaction()
    cmd.Transaction = trn
  2. 更新する SQL 文の生成、及び、設定
    今回のソースコードではトランザクションの開始よりも前で、SQL 文を生成しています。
  3. データ更新を実行
    下記を実行します。
    cmd.ExecuteNonQuery()
  4. データ更新が正常に実施されたか判定後、トランザクションの終了
    4-1. データ更新が成功した場合、コミットを実行
      下記を実行します。
      trn.Commit()
    4-2. データ更新が失敗した場合、ロールバックを実行
      下記を実行します。
      trn.Rollback()

 

変換パラメーターの設定

DbParameter オブジェクトを使用することで、SQL 文を実行する際の値をパラメーターで設定できます。

パラメーターの設定方法は下記となります。

' パラメーターを設定するオブジェクトを生成
param = prov.CreateParameter()

' 変換する値のデータ型を指定
param.DbType = DbType.Int32

' 変換する値のパラメーター文字列を指定
param.ParameterName = "PERSON_NUM"

' 変換する値を指定
param.Value = 5

' 上記設定したパラメーターを追加
cmd.Parameters.Add(param)

 

簡易的なソースプログラムとなりますので、エラー処理などは記載していません。

 

このソースプログラムを元にしてクラス化することにより、SQL ServerOracle の接続を共通化し、開発効率があがればと思います。

 

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