データベースに対しSQLコマンドを実行する(SqlCommandオブジェクト)

2022年4月2日土曜日

SQLServer VB.NET データベース

t f B! P L
今回もデータベースを扱うプログラムを
御紹介させていただければと思います。

前回・前々回でSqlConnectionオブジェクトを利用し
データベースとの接続を確立する手順と
ConnectionStringプロパティに設定する文字列を
SqlConnectionStringBuilderオブジェクト使用し
作成する方法をそれぞれ御紹介いたしました。
今回は「SqlCommand」オブジェクトを使用し、
接続が確立されたデータベースに対し、
SQLコマンドを実行する方法を御紹介いたします。

実際のシステムでは利用者が様々な情報を
データベースに登録・削除したり、
登録してある情報に対し検索したり集計したりするために
データベースに対して様々なSQLコマンドを実行し、
データベース内のデータを扱うことがありますが
下記の方法で各種SQLコマンドを実行し
データ操作を行うことが可能となります。

SQLコマンドを実行するには
SqlCommandオブジェクトの下記プロパティに値を設定し、
「ExecuteNonQuery」、「ExecuteReader」メソッドを呼び出すことで
SQLコマンド実行できます。

Connectionプロパティ    SQLコマンドを実行する対象のデータベースへの接続した
                                        SqlConnectionオブジェクトを設定します。

CommandTypeプロパティ    CommandTextプロパティに設定した値を
                                            どう評価するかを指定します。
                                            CommandType列挙体の下記の値を設定します。

CommandType.Text                        SQLのテキストコマンドと評価します。
CommandType.StoredProcedure      ストアドプロシージャ名と評価します。
CommandType.TableDirect            テーブル名と評価します。

通常のSELECTやINSERT、DELETE、UPDATEなどのSQLコマンドを実行する場合、
CommandType.Textに設定します。

CommandTextプロパティ 実行するSQLコマンド・ストアドプロシージャ名・
                                            テーブル名を設定します。

最低限SQLコマンドを実行するためには上記の3つのプロパティを設定します。
実際にSQLコマンドを実行する際は下記のメソッドを実行することで
Connectionプロパティに設定されたデータベースへの接続に対し、
CommandTextプロパティに設定されたSQLコマンドが実行されます。

ExecuteNonQueryメソッド        SQLコマンドが実行され、
                                                影響を受けたレコード数が返されます。
                                                INSERTやUPDATE、DELETEなどの
                                                データ操作を行うコマンドを実行する際は
                                                こちらのメソッドを実行します。

ExecuteReaderメソッド     SQLコマンドが実行された結果の
                                                DataReaderオブジェクトが生成されます。

以上でデータベースのテーブルに対しSELECT文によるデータの取得や
INSERT・UPDATE・DELETEなどのデータ操作を行うSQLコマンドを実行できます。

サンプルで見てみましょう。
接続を確立する部分は前回の記事を参考にしてください。
前回記事のサンプルにある
「'###この部分にデータベース処理を記述します。###」の部分に
下記のサンプルが入ると思っていただければ結構です。
(変数の宣言などは除きます・・・。)

①SELECT文によるデータの取得
(CustomerTableテーブルから
 CustomerID,CustomerNameを取得するサンプルです。)

Private Sub prcDataOperation()
    Dim strCommand As String                '実行するSQLコマンド
    Dim redGetData As SqlDataReader     'SELECT文の結果を格納するオブジェクト

    '実行するSQLコマンドを作成しておく
    strCommand = "SELECT CustomerID, CustomerName FROM CustomerTable;"

    Using cmdSQL As New SqlCommand
        With cmdSQL
            .Connection = conSQLConnect         'SQL接続を指定
            .CommandType = CommandType.Text 'SQLのテキストコマンドと評価
            .CommandText = strCommand         '実行するSQLコマンドを指定
End With

        'SQLコマンドを実行しSqlDataReaderを生成
redGetData = cmdSQL.ExecuteReader

        '###この部分にデータ取得後の処理を記述します。###
    End Using
End Sub


②UPDATE文によるデータの更新
(ItemTableテーブルのItemCodeが15のデータの
 ItemPriceを1,000に更新するサンプルです。)

Private Sub prcDataOperation()
    Dim strCommand As String            '実行するSQLコマンド

    '実行するSQLコマンドを作成しておく
    strCommand = "UPDATE ItemTable SET ItemPrice = 1000 "
                           "WHERE ItemCode = 15;"

    Using cmdSQL As New SqlCommand
        With cmdSQL
            .Connection = conSQLConnect         'SQL接続を指定
            .CommandType = CommandType.Text 'SQLのテキストコマンドと評価
            .CommandText = strCommand         '実行するSQLコマンドを指定
End With

        'SQLコマンドを実行
        cmdSQL.ExecuteNonQuery()
    End Using
End Sub


以上がSqlCommandオブジェクトを使用しSQLコマンドを実行する方法です。
次回はSELECT文でDataReaderオブジェクトに取得したデータを
プログラム上で利用する方法を御紹介できればと思います。

今回も簡単な御紹介となっておりますので、
MicroSoftのドキュメントなども参考にしていただければ幸いです。
また、SQLの文法や様々なテクニックも今後御紹介できればと思います。

他にもいろいろと方法もございますし、
開発するシステムによっては、よりふさわしい方法もあるかと思いますが、
御参考にしていただければと思います。
サンプルはVB.NETで作成しておりますが、
考え方はどんな言語でも同じですので、
参考にしていただければと思います。

  

QooQ