当我使用MysqlConnection.open()时为什么它不起作用?

时间:2014-09-19 12:04:20

标签: c# mysql

  using System;
    using System.Collections.Generic;
    using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;


namespace dbTest
{
    class Program
    {
        static void Main(string[] args)
        {

        string sqlStr   = "Database=weather;Server=127.0.0.1;Uid=root;Password=123456;pooling=false;CharSet=UTF8;port=3306";

          MySqlConnection mysql = new MySqlConnection(sqlStr);

             mysql.Open();

             Console.WriteLine("SUCCESS");

              mysql.Close();
        }
    }
}

运行句子" mysql.Open()"

时会崩溃

有人知道为什么吗? 错误消息是:         -unhandled exception:System.Collecions.Generic.KeyNotFoundException:该键不在字典中         -in System.Collections.Generic.Dictionary' 2.get_Item(TKEY KEY)         -in Mysql.Data.MySqlClient.CharSetMap.GetCharacterSet(DBVersion version,String CHARSETNAME)         -in Mysql.Data.MySqlClient.CharSetMap.GetEncoding(DVversion版本,String CharSetName)         -in Mysql.Data.MySqlClient.Driver.Configure(MySqlConnection连接)         -in Mysql.Data.MySqlClient.Mysqlconnection.Open()         -in dbTest.Program.Main(String [] args)location:blahblah ...

1 个答案:

答案 0 :(得分:4)

您正在指定无效的字符集。看看this reference

  

请注意!使用小写值utf8而不是大写UTF8,因为这将失败。

该值区分大小写,应为小写:

Database=weather;Server=127.0.0.1;Uid=root;Password=123456;pooling=false;CharSet=utf8;port=3306

不可否认,这是一个无益的错误信息,但我认为这就是它。 (这就是为什么读取堆栈跟踪通常比消息本身更有用,因为它可以为研究答案提供基础。)