まるまるこふこふ

数々の次元が崩壊し、全ての生命が塵と化すのを見てきた。私ほどの闇の心の持ち主でも、そこには何の喜びも無かった。

VB.NETでデータベースに接続する(ADO.NET)(1)

技術的なメモ。VB.NETでデータベースに接続する方法は、色々あるんだけど、現在はADO.NETを使って接続するのが主流らしい。

データベース接続

接続は System.Data.SqlClient.SqlConnection クラスを使って行う。

データベース接続サンプル1

Dim Con As New System.Data.SqlClient.SqlConnection

'接続先指定
Con.ConnectionString = _
    "Data Source = [サーバ名];" & _
    "Initial Catalog = [データベース名];" & _
    "Integrated Security = SSPI"

'データベースをオープン
Con.Open()

データベース接続サンプル2

Dim Con As System.Data.SqlClient.SqlConnection

'インスタンス初期化時に引数に接続文字列を突っ込んでも良い
Con = New System.Data.SqlClient.SqlConnection _
    ("Data Source = [サーバ名];" & _
    "Initial Catalog = [データベース名];" & _
    "Integrated Security = SSPI")

Con.Open()

トランザクションの開始

BeginTransaction()メソッドを使用してトランザクションを開始する。
トランザクションの概念についてはSQLの分野なので割愛)

トランザクションサンプル

Dim Con As New System.Data.SqlClient.SqlConnection

'接続先指定
Con.ConnectionString = _
    "Data Source = [サーバ名];" & _
    "Initial Catalog = [データベース名];" & _
    "Integrated Security = SSPI"

'データベースをオープン
Con.Open()

'トランザクションを開始
Con.BeginTransaction()

クエリー発行の準備

発行したいクエリーの設定はSystem.Data.SqlClient.SqlConnectionクラスのCreateCommandメソッドを使う方法と、System.Data.SqlClient.SqlCommandクラスを使う方法がある。内部ではどちらにしろSqlClient.SqlConnectionクラスを使っているのでどちらでも構わない。

SqlClient.SqlConnectionのCreateCommandを使う場合

Dim Con As New System.Data.SqlClient.SqlConnection

'接続先指定
Con.ConnectionString = _
    "Data Source = [サーバ名];" & _
    "Initial Catalog = [データベース名];" & _
    "Integrated Security = SSPI"

'データベースをオープン
Con.Open()

'トランザクションを開始
Con.BeginTransaction()

'SQLクエリー文が格納される変数commandの作成
Dim command As System.Data.SqlClient.SqlCommand = Con.CreateCommand()

'実行するSQLクエリーを指定
command.CommandText = "SELECT * FROM [テーブル名]"

'結果が返ってくるまで待機する秒数
command.CommandTimeout = 15

SqlClient.SqlCommandクラスを使う場合

Dim Con As New System.Data.SqlClient.SqlConnection

'接続先指定
Con.ConnectionString = _
    "Data Source = [サーバ名];" & _
    "Initial Catalog = [データベース名];" & _
    "Integrated Security = SSPI"

'データベースをオープン
Con.Open()

'トランザクションを開始
Con.BeginTransaction()

'SQLクエリー文が格納される変数commandの作成
Dim command As New System.Data.SqlClient.SqlCommand

'先ほどと違いクエリーの送信先を指定してあげないといけない
command.Connection = Con

'実行するSQLクエリーを指定
command.CommandText = "SELECT * FROM [テーブル名]"

'結果が返ってくるまで待機する秒数
command.CommandTimeout = 15

両者ともこの段階ではまだクエリーは発行されておらず、Executeしてあげないと実際にクエリーは発行されない。

次回に続く。

※なんかもうサンプルコードとかめちゃくちゃ間違ってるんだけど、訂正する気も起こらない