DBバージョン:MySQL5 ODBCバージョン:ODBC3.51 言語:VB2003
を利用し VBからSQLを発行した際、1バイト文字の場合は問題はなく SQL文内に日本語を含むとハンドルされていない旨のシステムエラーが出てしまいます
SQLAdminからStatusコマンドDBのキャラクタセット情報を確認してもSJISとして設定されており
またコンソールから直接SQL文を打ち込んでも正常に動作いたします
My.iniファイルも文字コードはSJISに置き換えてあり 何が原因かつかめません
*VBコード
Dim MyConString As String
Dim MyConnection As OdbcConnection
Dim strSQL As String
Dim myOdbcCommand As OdbcCommand
Dim iRet As String
MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" + _
"SERVER=localhost;" + _
"PORT=3306;" + _
"DATABASE=kanri_db;" + _
"UID=xxxx;" + _
"PASSWORD=xxxx;" + _
"OPTION=3;" + _
"CHARSETENCODING=sjis"
'Connection
MyConnection = New OdbcConnection(MyConString)
'myConn.Open()
MyConnection.Open()
Console.WriteLine("Connection State::" & MyConnection.State.ToString)
'SQL
strSQL = "select csv_subitem from tbl_readtempcsv where csv_subitem='ワークグループ';"
myOdbcCommand = MyConnection.CreateCommand
myOdbcCommand = New OdbcCommand
myOdbcCommand.Connection = MyConnection
myOdbcCommand.CommandType = CommandType.Text
myOdbcCommand.CommandText = strSQL
iRet = myOdbcCommand.ExecuteNonQuery
どなたかご教示いただけないでしょうか 宜しくお願いいたします
No.1ベストアンサー
- 回答日時:
my.iniのCLIENT SECTIONのdefault-character-setはMySQLが提供するクライアントアプリケーションのための設定です。
そのため、ユーザ独自のクライアントアプリケーションは初期化時にキャラクタセットを設定する必要があります。質問者さんのコードでは、CHARSETENCODINGというパラメータを指定していますが、マニュアルを読む限りMySQLのODBCにはそのパラメータは存在しません。
MySQLのODBCには STMT というパラメータがあり、ここに接続後に実行するステートメントを指定することができます。キャラクタセットを指定するステートメントは
set names sjis (もしくは set character set sjis)
です。
コードの変更点としては
"CHARSETENCODING=sjis"
を
"STMT=set names sjis"
と変更することになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで連勤チェックをした...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
Column '' not found.
-
MySQLのfield数の上限について
-
ADOのバージョンを確認する方法
-
-3.34 が -3.3399999999999999 ...
-
2023年10月25日現在のMAMP ...
-
php+MySqlでの検索ページ
-
データベースについて質問させ...
-
データベースのフィールドのデ...
-
UTF-8にしても文字化けが直らない
-
泣きそうです>< PHPでSQLite3が...
-
MySQL のコマンドが実行出来ま...
-
VBAで変数内に保持された二次配...
-
日本語のデータがインポートで...
-
Float型の時の計算結果がおかしい
-
MySQLサーバのコンピュータ名変...
-
「・」中点が入った文字列を条...
-
SQL開発環境ソフトウェアである...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
like句を使って日本語を検索す...
-
my.cnf と my.ini の違い
-
エクセルで連勤チェックをした...
-
ODBC接続で全角文字が文字化け
-
windows上のphpにおける全角ハ...
-
phpMyadminでのMySQLの文字セット
-
phpMyAdminのデフォルトのLangu...
-
netscreen remoteに関して
-
文字コード変更
-
MYSQLの文字化けについて
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
ODP.NETのバージョン確認
-
ERROR 1045 (28000) (using pas...
-
VBAで変数内に保持された二次配...
-
MySQLカラム名は日本語と英数字...
-
INT型は金額の型に使用するべき...
-
プライマリーキーの昇順でソー...
-
Float型の時の計算結果がおかしい
おすすめ情報