Windows 7(64bit)版+MySQLで、データ取得からデータ更新まであれこれをするまでのメモ。
久々にプログラム開発をしてみた。
まあ言語は何でもよかったんだけど、久々にVisual Basic6.0で。
・・・で、VB6インストールしたんだけど、SP6が入らない。
仕方ないのでSPあてずに作業を続ける。
(後日SPを当てる方法がわかりました)
MySQLのサーバーは別マシンですでに立ってるので、
そこに間借りすることにする。
とりあえず、ODBCドライバを落としてくる。
Windows (x86, 64-bit), MSI Installer
https://dev.mysql.com/downloads/connector/odbc/
データベースの作成時に、文字コードは、utf8_unicode_ci で作成しておけば良い。
文字化けの原因は、ここが utf8以外になっていることがほとんどなので、まずはここを疑う。
VB側で参照設定を
VB6側では事前に、
Microsoft ActiveX Data Objects 2.8 Library を参照しておくこと。
MySQLへの接続
以下のコードで接続する。
Dim ConnectionString As String
Const DB_SERVER = "localhost"
Const DB_PORT_NO = "3306"
Const DB_MAME = "test_db"
Const DB_USER = "test_user"
Const DB_PASSWORD = "test_pass"
Dim ADO_Conn As New ADODB.Connection
ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver};" & _
"SERVER=" & DB_SERVER & ";" & _
"PORT=" & DB_PORT_NO & ";" & _
"DATABASE=" & DB_MAME & ";" & _
"USER=" & DB_USER & ";" & _
"PASSWORD=" & DB_PASSWORD & ";"
ADO_Conn.Open ConnectionString
SQL実行
とりあえずサンプルでデータをINSERTしてみる。
ADO_Conn.Execute "INSERT INTO test_tbl(id,memo) VALUES(1,'ほげ') " ADO_Conn.Execute "INSERT INTO test_tbl(id,memo) VALUES(841,'yayoi') "
データの取得
データの取得はこんな感じ
Dim rs As New ADODB.Recordset
rs.Open "SELECT * FROM test_tbl", ADO_Conn
Do While Not rs.EOF
Debug.Print rs!id, rs!Memo
rs.MoveNext
Loop
Set rs = Nothing
データの書き込み
データの書き込みはこんな感じ。
日本語の処理に苦労するとおもったけど・・・
ADO_Conn.Execute "UPDATE test_tbl SET memo = 'ζ*゚ワ゚)ζ<うっうー' WHERE id =841 "
phpMyAdminで確認すると・・・
おおすごい!文字化けせず書き込めてる!
昔文字コードで苦労した記憶があったんだけど、今のODBCドライバが賢いのかな?
とにかくこれでMySQLのデータベースに対し、VB6でアクセスするなんて鬼畜な
社内アプリをゴリゴリ書く準備はできた。
一部のデータはApache+PHPで読み書きさせるんですよ。
どれだけ外道プログラマーなんだかw


コメント