以前我使用sql server 2005作为我的网站数据库,一切运作良好.现在我已经改为MySql server 5.5数据库,因为它是开源的.
我使用Navicat Premium将我的数据从sql server传输到mysql.我使用mysql workbench和navicat来管理我的数据库.当我声明与mysql数据库的连接时出现问题.这是我的代码:
MySqlCommand cmdselect;
MySqlConnection conNDB;
MySqlDataReader Mydtr;
string server = "localhost";
string database = "maindb";
string uid = "root";
string password = "abc123";
string strCon = "SERVER=" + server + ";" + "DATABASE=" +
database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
string strSelect = "SELECT * FROM announcement";
conNDB = new MySqlConnection(strCon);
conNDB.Open();
cmdselect = new MySqlCommand(strSelect, conNDB);
Mydtr = cmdselect.ExecuteReader();
rptAnnounce.DataSource = Mydtr;
rptAnnounce.DataBind();
Mydtr.Close();
conNDB.Close();
Run Code Online (Sandbox Code Playgroud)
已经设置了对MySql.Data的引用.在这里我收到此错误消息:
异常详细信息:MySql.Data.MySqlClient.MySqlException:变量'character_set_client'不能设置为'utf16'的值错误消息声明在connection.Open();
当我继续刷新错误页面时,我有时会收到另一个错误.就这个:
异常详细信息:MySql.Data.MySqlClient.MySqlException:数据包的预期结束错误消息声明在Mydtr = cmdselect.ExecuteReader()期间发生此错误
我是mysql的新手.我不知道这是什么问题.我想这个问题来自数据库的设置或数据,而不是我的源代码.
有谁知道解决方案?非常感谢您的帮助.我一直在尝试4天但无法解决.
解决了!!感谢@Etienne Rached 和@jeremi
所有的问题都来自于字符集问题。
解决方案:下载navicat,更改数据库和各个表的字符集。
有2个地方需要检查:
1)右键单击数据库,例如。myDb。然后选择属性并设置字符集
2) 右键单击表格并选择设计表。单击每一行以更改字符集,最后转到“选项”选项卡并更改字符集。
供您参考:这是非常罕见的情况。我谷歌它几乎找不到解决方案。我在安装Mysql时犯了这个错误,我选择了utf16格式><
顺便说一下,简单的连接字符串就可以了。喜欢
"server=localhost;database=maindb;uid=root;pwd=abc123;CharSet=utf8; port=3306";
Run Code Online (Sandbox Code Playgroud)