Hello, DAO(VB6) World!
Posted on 3月 3rd, 2013 by cx20
DAO
DAO(Data Access Object)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
主に Jet データベース(Access MDB)との接続に用いられるが、ODBC 経由で他の DBMS への接続も可能である。
DAO 12 より 64bit 版が提供されるようになったが VB6 では 32bit 版のみ利用可能となっている。
クライアントアプリケーション |
データベースエンジン |
推奨されるデータベース形式 |
Access 2.0 |
Jet 2.0 |
*.mdb (Jet 2.0) |
Access 95 |
Jet 3.0 |
*.mdb (Jet 3.x) |
Access 97 |
Jet 3.5 |
*.mdb (Jet 3.x) |
Access 2000 |
Jet 4.0 |
*.mdb (Jet 4.x) |
Access 2002 |
Jet 4.0 |
*.mdb (Jet 4.x) |
Access 2003 |
Jet 4.0 |
*.mdb (Jet 4.x) |
Access 2007 |
ACE 12.0 (32bit) |
*.accdb (ACE 12.0) |
Access 2010 (32bit) |
ACE 12.0 (32bit) |
*.accdb (ACE 12.0) |
DAO 3.0 |
Jet 3.0 |
*.mdb (Jet 3.x) |
DAO 3.5 |
Jet 3.5 |
*.mdb (Jet 3.x) |
DA0 3.6 |
Jet 4.0 |
*.mdb (Jet 4.x) |
DA0 12 (32bit) |
ACE 12.0 (32bit) |
*.accdb (ACE 12.0) |
Microsoft.Jet.OLEDB.3.51 |
Jet 3.5 |
*.mdb (Jet 3.x) |
Microsoft.Jet.OLEDB.4.0 |
Jet 4.0 |
*.mdb (Jet 4.x) |
Microsoft.ACE.OLEDB.12.0 (32bit) |
ACE 12.0 (32bit) |
*.accdb (ACE 12.0) |
ソースコード(VB6 + DAO + Jet データベース)
Option Explicit
Sub Main()
Dim dbe
Dim db
Dim rs
Set dbe = CreateObject("DAO.DBEngine.36")
Set db = dbe.OpenDatabase("Hello.mdb")
Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message")
While Not rs.EOF
Debug.Print rs(0).Name
Debug.Print "-----------------"
Debug.Print rs(0).Value
rs.MoveNext
Wend
rs.Close
db.Close
End Sub |
Option Explicit
Sub Main()
Dim dbe
Dim db
Dim rs
Set dbe = CreateObject("DAO.DBEngine.36")
Set db = dbe.OpenDatabase("Hello.mdb")
Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message")
While Not rs.EOF
Debug.Print rs(0).Name
Debug.Print "-----------------"
Debug.Print rs(0).Value
rs.MoveNext
Wend
rs.Close
db.Close
End Sub
ソースコード(VB6 + DAO + ACE データベース)
Option Explicit
Sub Main()
Dim dbe
Dim db
Dim rs
Set dbe = CreateObject("DAO.DBEngine.120")
Set db = dbe.OpenDatabase("Hello.accdb")
Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message")
While Not rs.EOF
Debug.Print rs(0).Name
Debug.Print "-----------------"
Debug.Print rs(0).Value
rs.MoveNext
Wend
rs.Close
db.Close
End Sub |
Option Explicit
Sub Main()
Dim dbe
Dim db
Dim rs
Set dbe = CreateObject("DAO.DBEngine.120")
Set db = dbe.OpenDatabase("Hello.accdb")
Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message")
While Not rs.EOF
Debug.Print rs(0).Name
Debug.Print "-----------------"
Debug.Print rs(0).Value
rs.MoveNext
Wend
rs.Close
db.Close
End Sub
ソースコード(VB6 + DAO + ODBC + SQL Server)
Option Explicit
Sub Main()
Dim dbe
Dim db
Dim rs
Set dbe = CreateObject("DAO.DBEngine.36")
Set db = dbe.OpenDatabase("", False, False, _
"ODBC;Driver={SQL Server};" & _
"SERVER=(local);DATABASE=master;" & _
"UID=sa;PWD=P@ssW0rd;")
Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message")
While Not rs.EOF
Debug.Print rs(0).Name
Debug.Print "-----------------"
Debug.Print rs(0).Value
rs.MoveNext
Wend
rs.Close
db.Close
End Sub |
Option Explicit
Sub Main()
Dim dbe
Dim db
Dim rs
Set dbe = CreateObject("DAO.DBEngine.36")
Set db = dbe.OpenDatabase("", False, False, _
"ODBC;Driver={SQL Server};" & _
"SERVER=(local);DATABASE=master;" & _
"UID=sa;PWD=P@ssW0rd;")
Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message")
While Not rs.EOF
Debug.Print rs(0).Name
Debug.Print "-----------------"
Debug.Print rs(0).Value
rs.MoveNext
Wend
rs.Close
db.Close
End Sub
ソースコード(VB6 + DAO + ODBC + Oracle)
Option Explicit
Const dbOpenSnapshot = 4
Const dbSQLPassThrough = 64
Sub Main()
Dim dbe
Dim db
Dim rs
Set dbe = CreateObject("DAO.DBEngine.36")
Set db = dbe.OpenDatabase("", False, False, _
"ODBC;Driver={Oracle in OraDb11g_home1};" & _
"DBQ=ORCL;" & _
"UID=scott;PWD=tiger;")
Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message")
' パススルークエリの例(データベース側に依存する SQL を実行する場合)
'Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message FROM DUAL", dbOpenSnapshot, dbSQLPassThrough)
While Not rs.EOF
Debug.Print rs(0).Name
Debug.Print "-----------------"
Debug.Print rs(0).Value
rs.MoveNext
Wend
rs.Close
db.Close
End Sub |
Option Explicit
Const dbOpenSnapshot = 4
Const dbSQLPassThrough = 64
Sub Main()
Dim dbe
Dim db
Dim rs
Set dbe = CreateObject("DAO.DBEngine.36")
Set db = dbe.OpenDatabase("", False, False, _
"ODBC;Driver={Oracle in OraDb11g_home1};" & _
"DBQ=ORCL;" & _
"UID=scott;PWD=tiger;")
Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message")
' パススルークエリの例(データベース側に依存する SQL を実行する場合)
'Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message FROM DUAL", dbOpenSnapshot, dbSQLPassThrough)
While Not rs.EOF
Debug.Print rs(0).Name
Debug.Print "-----------------"
Debug.Print rs(0).Value
rs.MoveNext
Wend
rs.Close
db.Close
End Sub
コンパイル方法
実行結果
Message
-----------------
Hello, DAO World! |
Message
-----------------
Hello, DAO World!
Tags: DAO
Categories: DAO, VB6