解决.net连接Mysql数据库中文报错的问题
如果在Mysql数据库中定义了一个中文名字的数据库表,直接用.Net Connector去访问数据库会报1146错误,即表名不存在
解决方法
用网上提供的方法,修改配置文件,设置服务器的默认字符集
自己摸索的方法,修改临时访问数据库的字符集
找connector的技术文档,文档写得清清楚楚
当你使用多语言数据库时,必须在连接字符串中自定义字符集
于是修改字符集为utf8(不是utf-8),实践成功!
String connetStr = "server=127.0.0.1;port=3306;user=root;password=123456; database=cpdb;Charset=utf8";
MySqlConnection conn = new MySqlConnection(connetStr);
try
{
conn.Open();//打开通道,建立连接,可能出现异常,使用try catch语句
Console.WriteLine("已经建立连接");
//在这里使用代码对数据库进行增删查改
string table = "测试数据集";
string schema = "cpdb";
MySqlDataAdapter da = new MySqlDataAdapter(new MySqlCommand($"select * from `{schema}`.`{table}`", conn));
System.Data.DataTable dataTable = new System.Data.DataTable(table, schema);
da.Fill(dataTable);
Roc.AppendTitle(".net connector 获取MySql数据");
Roc.AppendTable(dataTable);
Roc.AppendTitle("MySql数据源柱状图可视化");
Roc.AppendChart(dataTable);
}
catch (MySqlException ex)
{
switch (ex.Number)
{
case 0:
Console.WriteLine("Cannot connect to server. Contact administrator");
break;
case 1045:
Console.WriteLine("Invalid username/password, please try again");
break;
}
}
finally
{
conn.Close();
}
最终效果
对比服务器数据