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してあげないと実際にクエリーは発行されない。
次回に続く。
※なんかもうサンプルコードとかめちゃくちゃ間違ってるんだけど、訂正する気も起こらない