ODBC接続

ODBC接続とは #

ODBC(Open Database Connectivity)とは、アプリケーションがデータベース管理システム(DBMS)などに接続し、データの取得や書き込み、操作などを行うルールです。このルールはマイクロソフトが定めています。

MySQLに接続するには、MySQL用のODBCドライバーが必要です。DBに接続するアプリケーションは、このODBCという仕組みを利用し、DBにアクセスしデータを入出力します。 ODBC Connection

この文書では、32bit版のMySQL用ODBCドライバーのインストールについて説明します。

アンインストール #

すでに64bit版のODBCがインストールされている場合、アンインストールしてください。

手順: コントロールパネルを開き「アプリ」を選択します。 Contorl Panel

「odbc」と入力し検索すると、インストール済みのドライバーが表示されるので、アンインストールしてください。 Contorl Panel

確認ダイアログで「はい」を選びます。 Contorl Panel

ODBC接続の準備 #

MySQLのDBとODBC接続をするため、MySQLのサイトよりODBCドライバーをダウンロード、インストールします。 MySQL用ODBCドライバーは次のページよりダウンロードできます。

ダウンロード

Download

  1. Select Operating System で、「Microsoft Windwos」を選びます
  2. Select OS Version で、「x86, 32bit」を選びます
  3. Other Downloads の、「MSI Installer」にある「ダウンロード」ボタンを押します
  4. ダウンロードページに移動するので(Oracleのアカウントがない場合には)、「No thanks, just start my download.」を選ぶとダウンロードが始まる

インストール #

上記ODCBドライバーのダウンロードができたら、次に開発PC(Windows)にインストールしてみましょう。

  1. .msi ファイルを開きます。 MSI File

  2. セキュリティの警告ダイアログが出た場合、「実行」を選択します。 MSI File

  • 「this application requires visual studio 2019 x64 redistributable..」のようなメッセージが表示された場合、次のファイルをダウンロードしてください。 C++ 再配布可能パッケージ(32bit版) MSI File 参考

  • ダウンロードすると exe ファイルが出来上がりますので、起動しインストールしてください。 vc_redist.x86

  • インストールができたら、再度上記手順1から順に進めてください。

  1. 次のような画面になります。Nextを押してください。 Start

  2. ライセンスを確認し Nextを押してください。 License

  3. Setup type で Complete を選び Next 押してください。 Setup type

  4. インストール内容を確認し Next 押してください。 Ready

  5. インストールが終了しました。Finishボタンを押してください。 Finish

これで ODBCドライバーがインストールできました。

DBへのODBC接続の実例 #

アプリケーションからのODBC接続を使ってMySQLに接続する方法を2つご紹介します。

  1. DSNを使わない接続
  2. DSNを使う接続

下記サンプルはIDなど必要な部分を書き換えてエディタでファイルに保存し、アイコンをダブルクリックして実行してみましょう。
あらかじめ testDB が必要です。次の資料よりそれぞれ事前に作成してください。

「testDB」テーブル:
https://tulipsoft.com/reference/docs/sql/createdb/
「test」テーブル:
https://tulipsoft.com/reference/docs/sql/createtable/

DSNを使わない接続 #

こちらは、IDやパスワードなどDB接続に必要なDB接続文字列について、全てコードに記述し実行する方法です。

下記はサンプルコードです。コードを実行すると、コード内に指定された DriverやServer情報などが接続文字列に追加されます。その後、DBに接続し指定のテーブルよりデータを取得しメッセージボックスで表示します。

15行目で接続文字列を変数にセットし、これをDB接続時に利用しています。

Filename : bydriver.vbs

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Option Explicit

Dim oConn, oRs
Dim qry, connectstr
Dim db_name, db_username, db_userpassword
Dim db_server,fieldname,tablename

db_server = "localhost"
db_name = "testdb"
db_username = "usrname"
db_userpassword = "password"
fieldname = "name"
tablename = "test"

connectstr = "Driver={MySQL ODBC 8.0 Unicode Driver};SERVER=" & db_server & ";DATABASE=" & db_name & ";UID=" & db_username & ";PWD=" & db_userpassword

Set oConn = CreateObject("ADODB.Connection")
oConn.Open connectstr

qry = "SELECT * FROM " & tablename

Set oRS = oConn.Execute(qry)

if not oRS.EOF then
  while not oRS.EOF
    msgbox ucase(fieldname) & ": " & oRs.Fields(fieldname) 
    oRS.movenext
  wend
  oRS.close
end if

Set oRs = nothing
Set oConn = nothing

参考資料

DSNを使う接続 #

DSNを呼び出す方法とは、あらかじめ保存しておいたDSNをコード実行時に呼び出す方法です。 上記の 接続文字列を全てコードに記述との違いは次の通りです。

項目DSNを使わない接続DSNを使う接続
DB接続文字列全てコードに書くDSNに書き呼び出す
アプリケーション間での共有×

DSNを使わない接続は、アプリケーション内にDB接続文字列を全て書いて埋め込んでいるのに対し、DSNを使う方法ではあらかじめアプリケーション外のDSNに保存しておいたものを読み込みます。 DSNを使う接続は、コンピュータ上の複数のアプリケーションで使いまわすことができます。

DSNの保存 #

DSN(Data Source Name)とは、IDやパスワードなどDB接続に必要なDB接続文字列についてあらかじめ保存しておいたものです。 DSNを使ったDB接続をするために、DSNを保存する方法をご紹介します。

DSNを保存するには、Windowsボタンを押して「odbc」と検索し、表示された「ODBCデータソース(32ビット)」を選択します。
(あらかじめ、上記の ODBCの 接続準備 を実行しておいてください) ODBC Data Source

「ODBCデータソース(32ビット)」が起動すると、次のような画面になります。 「システムDSN」タブを選び、「追加」ボタンを押してください。 System DSN

「MySQL ODBC 8.0 Unicode Driver」を選択し、「完了」ボタンを押してください。 New DataSource

接続文字列の新規登録画面が表示されますので、入力し「OK」ボタンを押してください。

  1. Data Source Name:アプリケーションから呼び出す際にコードに記述するDSNの名前です。分かりやすい名前に自由に付けてください。
  2. Server:MySQLのサーバが起動しているコンピュータのIPアドレスです。
  3. User:DB接続時のユーザIDです。DBサーバで設定したもものを記載します。
  4. Password:DB接続時のパスワードです。DBサーバで設定したもものを記載します。
  5. Database:接続先のDB名です。DBサーバに作成したものを記載します。 Connection Palameter

OKボタンを押すと入力した内容が登録されています。この例では保存された DSN は「mysql-dsn」です。この名前でコードより DSN を指定すると保存した内容が接続文字列にセットされます。 DSN Saved

🍵以上で、DSNの保存ができました。

DSNを呼び出してODBC接続する #

上記で保存したDSNを使ってDB接続をするサンプルコードを示します。

3行目であらかじめ保存しておいた DSN を変数に保存します。
9行目で保存した DSN を接続文字列としセットしています。
DB接続に成功すると、13行目でレコードを取得しています。

Filename : bydsn.vbs

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
Option Explicit
dim strConn
strConn = "DSN=mysql-dsn"

dim oConn
Set oConn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

oConn.ConnectionString = strConn
oConn.Open

dim rs
rs.Open "SELECT * from test where id = 2", oConn
MsgBox(rs.Fields("name"))

rs.Close
set rs = Nothing
oConn.Close
set oConn = Nothing

参考資料