VB2010からMySqlConnectionで日本語名のDBへ接続する方法

タグの編集
投稿者 hogehoge1028  (社会人) 投稿日時 2017/2/15 15:07:42
いつも拝見しております。

久しぶりにVB2010でコーディングをすることになったものです。

VB2010を使ってMySqlConnectionにデータベース接続文字列を入力し、ネットワーク上のデータベースサーバーへ接続を試みていますが、例外処理でエラーを補足し、「UnKnown Database ????」となって接続できません。
このような現象についてご存知の方がいらっしゃいましたら、ご教授頂きたいと思います。

開発環境は以下の通りです。
■OS   :Windows7 Professional 32bit
 LANG:VB.Net2010 SP1
  DB:サーバー側:MySQL 5.1
        ※データベースはsjisで構築されています。
        クライアント側:MySQL Connector 6.7.4を利用しています。  

下記、プログラム
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Private Function MyFunc() As Long
        Dim con As New MySqlConnection
        Dim nNum as Long = -1

        Try
            con.ConnectionString = "Server=[サーバー名];UserID=[ユーザー];Password=[パスワード];Initial Catalog=[テスト]"
                                                                                                                                                       ~~~~~~~~~ここが日本語です。
            con.Open()
            ~~~~~~~~~~~ここでエラー発生!!

            
            Dim sQuery As String = "SELECT COUNT(*) AS CNT FROM TBL_A;"
            Dim oCmd As New MySqlCommand(sQuery, con)

            Dim dReader As MySqlDataReader
            dReader = oCmd.ExecuteReader()
            dReader.Read()
            nNum = Long.Parse(dReader("CNT"))
            dReader.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            con.Close()
        End Try

        Return nNum

End Function
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

宜しくお願い致します。

投稿者 魔界の仮面弁士  (社会人) 投稿日時 2017/2/15 16:22:31
> 「UnKnown Database ????」となって接続できません。
Unknown ではなく
UnKnown なのですね。


MySQL を使った事がないため、以下は予想でしか無いのですが:

(提案1) 接続文字列に CHARSET=sjis を追加してみる。
http://d.hatena.ne.jp/THE_MIND/20080517/1211043732

(提案2) 非ASCII なデータベース名をバッククォートで囲ってみる
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1299601512
投稿者 hogehoge1028  (社会人) 投稿日時 2017/2/15 17:08:25
早速の返信ありがとうございます。

ご教授頂いたURLを覗いてみます。

その結果は、またこちらに記載させて頂きます。

宜しくお願いします。
投稿者 hogehoge1028  (社会人) 投稿日時 2017/2/20 09:20:01
魔界の仮面弁士 様

返信が遅くなりまして申し訳ありません。
また、ご提案ありがとうございました。

早速、提案頂いた内容を試してみましたが、
残念ながら解決には至りませんでした。

やはり日本語名でデータベースを構築することに問題があるのでしょうか。
投稿者 shu  (社会人) 投稿日時 2017/2/21 07:57:52
Initial Catalog
ではなくて
Database
ではどうでしょう?

日本語でなければ接続できたのでしょうか?
投稿者 hogehoge1028  (社会人) 投稿日時 2017/2/22 17:28:23
返信がおそくなりまして申し訳ありません。

また、Initial CatalogではなくてDatabaseでも接続することが出来ませんでした。

database名が日本語でない場合は問題なく接続できます。
投稿者 hogehoge1028  (社会人) 投稿日時 2018/8/7 16:56:20
上手くできなかったので諦めていましたが、必要に迫られてきたので、改めてTryしました。
以下の様に修正したら、接続できました。

con.ConnectionString = "Server=[サーバー名];UserID=[ユーザー];Password=[パスワード];Database=[テスト]; CHARSET=sjis"

アドバイスをくれた方、どうもありがとうございました。