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

◆実行結果

実行結果



▼ページトップへ