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
コメント