MySQL ODBCドライバ
Windowsには標準で、いくつかの ODBC ドライバがインストールされているようですが、MySQL 用のドライバはインストールされていないようです。入手するには、MySQLのサイトからダウンロードします。
データベース(MySQL)への接続
【ODBC 接続】
<接続文字列>
Driver = {MySQL ODBC 5.3 Unicode Driver};
Server = HostName;
Port = PortNumber;
Database = DatabaseName;
STMT=SET NAMES CharacterCode;
UID = UserName;
PWD = Password;
引数・戻り値
- HostName ・・・ サーバーを指定します。(データベースのあるサーバーのホスト名、IPアドレス、ローカルの場合は、localhost)
- PortNumber ・・・ ポート番号を指定します。デフォルトでは、3306(省略可)。
- DatabaseName ・・・ 接続するデータベース名を指定します。
- CharacterCode ・・・ クライアント側の文字コードとデータベースの文字コードが異なる場合クライアント側の文字コードを指定します(Shift-JIS を指定する場合、STMT=SET NAMES sjis と指定します)。
- UserName ・・・ ユーザー名を指定します。
- Password ・・・ パスワードを指定します。
MySQL 接続(ODBC)
サンプルVBAソース
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
Sub Sample_ADO_MySQL() Const MYDRIVER = "Driver={MySQL ODBC 5.3 Unicode Driver};" 'ドライバー Const MYSERVER = "Server=localhost;" 'サーバー Const MYPORT = "Port=3306;" 'ポート Const MYDATABASE = "Database=hpdb02;" 'データベース名 Const MYCCODE = "STMT=SET NAMES sjis;" '文字コード(Excel側) Const MYUSER = "UID=hpdb02;" 'ユーザー名 Const MYPASS = "PWD=hpdb02;" 'パスワード Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim constr As String Dim strSQL As String Dim i As Long Dim j As Long constr = MYDRIVER & MYSERVER & MYPORT & MYDATABASE & MYCCODE & MYUSER & MYPASS cn.ConnectionString = constr cn.Open 'テーブル作成 strSQL = "Create Table 仕入先一覧(" & _ "仕入先ID nchar(5)," & _ "仕入先名 nvarchar(50)," & _ "口座番号 nchar(8));" rs.Source = strSQL rs.ActiveConnection = cn rs.Open 'データ追加 strSQL = "insert into 仕入先一覧 values " & _ "('00001', '大門商店', '40012345'), " & _ "('00002', '中門商店', '11012311'), " & _ "('00003', '小門商店', '12012221'), " & _ "('00004', '日進電器', '13422900'), " & _ "('00005', '山本電気', '11199923'), " & _ "('00006', '松尾商社', '23247001'), " & _ "('00007', '丸得商店', '11223345'), " & _ "('00008', '青葉倉庫', '12120000'), " & _ "('00009', '緑銀行', '12345678'), " & _ "('00010', '赤黄信用金庫', '87654321');" rs.Source = strSQL rs.Open strSQL = "Select * from 仕入先一覧;" rs.Source = strSQL rs.Open 'データ表示 With Worksheets("mysql_odbc") .Cells.Clear i = 1 Do Until rs.EOF For j = 0 To rs.Fields.Count - 1 If i = 1 Then .Cells(i, j + 1) = rs.Fields(j).Name .Cells(i + 1, j + 1) = rs(j).Value .Cells(i + 1, j + 1).Errors(xlNumberAsText).Ignore = True Next j rs.MoveNext i = i + 1 Loop End With rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub |