前提・実現したいこと
VBAからpreparedstatementを使用してMySQLにデータ登録
発生している問題・エラーメッセージ
登録情報に日本語を設定した際に文字化け(すべての文字が???)します。 英語や数字を設定した際は問題ないです。
該当のソースコード
VBA
1 2 Dim con As New ADODB.Connection 3 4'DB接続 5Function getConnection() 6 con.Open "Driver=MySQL ODBC 8.0 Unicode Driver; SERVER=127.0.0.1; DATABASE=aaa_db; USER=aaa; PASSWORD=aaa123;" 7End Function 8 9'preparedstatementを利用して登録 10Sub preparedInsert() 11 12 getConnection 13 14 Dim sql As String 15 sql = "INSERT INTO aaa_db (`NAME`, `TEL`, `ZIP`, `ADDRESS`, `CONTACT_NAME`, `CONTACT_EMAIL`, `CREATED`, `UPDATED`) VALUES (?,?,?,?,?,?,?,?)" 16 17 Dim cmd As ADODB.Command 18 Set cmd = New ADODB.Command 19 20 With cmd 21 .ActiveConnection = con 22 .CommandText = sql 23 .Parameters.Append cmd.CreateParameter("NAME", adChar, adParamInput, 100, "佐藤") 24 .Parameters.Append cmd.CreateParameter("TEL", adChar, adParamInput, 50, "090-2222-2222") 25 .Parameters.Append cmd.CreateParameter("ZIP", adChar, adParamInput, 50, "111-1111") 26 .Parameters.Append cmd.CreateParameter("ADDRESS", adChar, adParamInput, 100, "東京") 27 .Parameters.Append cmd.CreateParameter("CONTACT_NAME", adChar, adParamInput, 50, "鈴木") 28 .Parameters.Append cmd.CreateParameter("CONTACT_EMAIL", adChar, adParamInput, 50, "AAA@gmail.com") 29 .Parameters.Append cmd.CreateParameter("CREATED", adInteger, adParamInput, , 20200101) 30 .Parameters.Append cmd.CreateParameter("UPDATED", adInteger, adParamInput, , 20200101) 31 .Execute 32 End With 33 34 con.Close 35 36End Function 37 38 39'preparedstatementを利用しないで登録 40Sub insert() 41 42 getConnection 43 44 Dim sql As String 45 sql = "INSERT INTO " aaa_db " (`NAME`, `TEL`, `ZIP`, `ADDRESS`,`CONTACT_NAME`, `CONTACT_EMAIL`, `CREATED`, `UPDATED`) VALUES ('佐藤','090-2222-2222','111-1111','東京','鈴木','AAA@gmail.com',20200101,20200101)" 46 47 con.Execute(sql) 48 con.Close 49 50End Function
試したこと
3番目のプロシージャに記載したpreparedstatementを利用しない方法でSQL文を実行したところ、
文字化けすることなくデータは登録されました。
その為、preparedstatementでの処理に問題があるのと考えています。
補足情報(FW/ツールのバージョンなど)
Excel 64bit
Microsoft ActiveX Data Objects 6.1 Library
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/17 05:30
退会済みユーザー
2020/07/17 05:42
2020/07/17 06:10
2020/07/20 00:00
2020/07/20 00:15