前提
1.SQL Serverのバージョンは2017
2.SQL Serverの認証方法は「Windows 認証」
3.「ADO」と「ODBCドライバ」を使用してDBへアクセス
4.以下のテーブルが作成済み
ポイント
1.接続文字列に「Trusted_Connection=Yes;」を記載することにより「Windows 認証」となる
2.「ADO」と「SQL Server Native Client(ODBCドライバ)」を使用してDBアクセスする
3.「SQL Server Native Client」は「OLE DBドライバ」であり「ODBCドライバ」でもある
サンプルプログラム
Option Explicit
Sub ODBCSample()
'===============================
'接続文字列
'===============================
'プロバイダ
'Const ODBC_DRIVER As String = "{ODBC Driver 17 for SQL Server}" 'こっちでも可
Const ODBC_DRIVER As String = "{SQL Server Native Client 11.0}"
'SQL Serverをインストールしたコンピューター名
Const DB_SERVER As String = "DESKTOP-TO07N7Q"
'DB名
Const DB_NAME As String = "testDB"
'ログインユーザ名とパスワード ※Windows 認証の場合は不要
'Const USER_NAME As String = "sampleUser"
'Const PASSWORD As String = "password"
'===============================
'カーソルと読み取り専用の設定
'===============================
Const adOpenKeyset As Integer = 1
Const adLockReadOnly As Integer = 1
'===============================
'テーブルの列
'===============================
Const ID_COLUMN As Integer = 0
Const NAME_COLUMN As Integer = 1
Const BARTHDAY_COLUMN As Integer = 2
Const GENDER_COLUMN As Integer = 3
Dim con As Object
Dim strCon As String
Dim strSQL As String
Dim recordset As Object
Dim recordStr As String
Dim rcnt As Long
'接続文字列の組み立て
strCon = "Driver=" & ODBC_DRIVER & ";" & _
"Server=" & DB_SERVER & ";" & _
"DATABASE=" & DB_NAME & ";" & _
"Trusted_Connection=Yes;"
'オープン
Set con = CreateObject("ADODB.Connection")
con.Open strCon
strSQL = "SELECT Id, Name, Birthday, Gender FROM Employee"
'Select文を実行し結果を取得
Set recordset = CreateObject("ADODB.Recordset")
recordset.Open strSQL, con, adOpenKeyset, adLockReadOnly
'レコード分繰り返し
Do Until recordset.EOF
recordStr = recordset.Fields(ID_COLUMN).Value & "," & _
recordset.Fields(NAME_COLUMN).Value & "," & _
recordset.Fields(BARTHDAY_COLUMN).Value & "," & _
recordset.Fields(GENDER_COLUMN).Value
MsgBox recordStr
' 次のレコードへ進む
recordset.MoveNext
Loop
'後片付け
recordset.Close
con.Close
Set recordset = Nothing
Set con = Nothing
End Sub
実行結果
備考
OLE DBドライバを使用してSQL Serverへアクセスする方法は、以下の記事を参照。