ADOを使ってSQL Server Express 2005のデータベースに接続する方法
◆概要
このページは、Visual Basic 6.0からADOを使って、SQL Server Express 2005のデータベースに接続する方法について記載しています。
次の例では、SQL Server Express 2005に登録したサンプルデータベースNorthwindに接続し、テキストボックスにレコードを表示します。
SQL Server Express 2005にサンプルデータベースNorthwindを登録する方法は、SQL Server 2005 Books OnlineのExpress Editions 用サンプル データベースのインストールやNorthwind サンプル データベースと pubs サンプル データベースのダウンロードを参照してください。
◆手順
準備として、VBからADOを使うために、[プロジェクト]メニューの[参照設定]ダイアログボックスで、[Microsoft ActiveX Data Objects 2.5 Library]を選択します。
次に、[プロジェクト]-[Project1のプロパティ]で[スタートアップの設定]で[Sub Main]を選択します。
フォームにコントロールを配置
フォームにコントロールを下図のように配置します。
コマンドボタンのオブジェクト名は、左からcmdFirst、cmdPrevious、cmdNext、cmdLastです。
次に[プロジェクト]-[標準モジュールの追加]で標準モジュールを追加し、以下のコードを記述します。
なお、サーバー名のJCS\SQLEXPRESSうち、JCSはコンピュータ名です。お使いのコンピュータ名に置き換えてください。
Option Explicit Public cn As New ADODB.Connection ' ドライバ名 Private Const CON_STRING = "Driver={SQL Server};" ' サーバー名 Private Const PUB_SEVName As String = "Server=JCS\SQLEXPRESS;" ' データベースファイル名 Private Const PUB_DBName As String = "Database=NorthWind;" Sub Main() Dim stCon As String '接続文字列を格納する変数 ' 複数のインスタンスを防ぎます If App.PrevInstance = True Then Exit Sub End If ' 接続文字列の作成 stCon = CON_STRING & PUB_SEVName & PUB_DBName ' ADODB.Connection の新しいインスタンスを生成する Set cn = New ADODB.Connection ' データベース接続を開く cn.Open (stCon) ' フォームを表示する Form1.Show End Subフォームモジュール
Option Explicit Dim rs As New ADODB.Recordset ' オブジェクト変数 ' テーブル名 Private Const TABLE_NAME = "Employees" ' Private Sub Form_Load() ' テーブル名を指定してレコードセットを作成する rs.Open TABLE_NAME, cn, adOpenKeyset, adLockOptimistic ' データをセットする Call Set2Data End Sub ' Private Sub Form_Unload(Cancel As Integer) ' レコードセットを閉じる rs.Close ' オブジェクトを開放 Set rs = Nothing ' データベース接続を閉じる If Not cn Is Nothing Then If cn.State <> ObjectStateEnum.adStateClosed Then cn.Close End If ' オブジェクトを開放 Set cn = Nothing End If End Sub ' Private Sub Set2Data() ' テーブルのフィールドを非連結コントロールに表示する Me!txtEmployeeID.Text = rs!EmployeeID Me!txtLastName.Text = rs!LastName Me!txtFirstName.Text = rs!LastName Me!txtBirthDate.Text = rs!BirthDate End Sub Private Sub cmdFirst_Click() rs.MoveFirst ' 先頭レコードへ移動 ' データをセットする Call Set2Data End Sub ' Private Sub cmdLast_Click() rs.MoveLast ' 最終レコードへ移動 ' データをセットする Call Set2Data End Sub ' Private Sub cmdNext_Click() ' 次のレコードへ移動 rs.MoveNext If rs.EOF = True Then rs.MoveLast End If ' データをセットする Call Set2Data End Sub ' Private Sub cmdPrevious_Click() ' 一つ前のレコードへ移動 rs.MovePrevious If rs.BOF = True Then rs.MoveFirst End If ' データをセットする Call Set2Data End Sub Private Sub mnuFileExit_Click() Unload Me End Sub
◆実行結果