开发工具vs2005 c#, 数据库: MySQL5.0. 数据库管理工具:MySQL-Front.
碰到的一些问题:
一.
Client does not support authentication protocol requested
by server; consider upgrading MySQL client
主要就是密码哈希算法在版本不同时有所改动。
解决方法:
1. 执行 SET PASSWORD FOR 'user'@'host' = OLD_PASSWORD('newpsd');
例如我的mysql帐户名为 root , hostname: localhost , psd: 000000
于是该语句为 SET PASSWORD FOR 'root'@'localhost' = OLD_PASSWORD('000000');
2. 执行
1)UPDATE mysql.user set password = OLD_PASSWORD('newpsd') where
Host = 'host' and user = 'user';
2)FLUSH PRIVILEGES;
我用的第一种方式.
二。在c#中进行mysql连接,同时使用datagridview时,如果mysql字段名为中文,则
在datagridview的标题字段名中显示的时候就会乱码。这个主要是因为编码不同,在datagridview控件当中,
标题栏应该是unicode编码,而我的mysql数据库中的编码方式全为gb2312.于是会出现以上问题。
因此在连接数据库之后需要进行 SET NAMES 'gbk'操作。
具体例子如下:
string strconn = "host=localhost;charset='gb2312';database=t;user id=root;password=000000";
MySqlConnection conn = new MySqlConnection();
conn.ConnectionString = strconn;
conn.Open();
MySqlCommand DBComm;
DBComm = new MySqlCommand("SET NAMES 'gbk'", conn);
DBComm.ExecuteNonQuery();
string strSql = "select adr as '地址' from product"; //如果不设置为gbk编码,则显示为乱码
MySqlDataAdapter adapter = new MySqlDataAdapter(strSql, conn);
DataSet ds = new DataSet();
DataTable dtSelect = new DataTable();
int rnt = adapter.Fill(ds,"ds");
dtSelect = ds.Tables[0];
conn.Close();
this.bindingSource1.DataSource = dtSelect;
this.dataGridView2.DataSource = bindingSource1;
在连接数据库时,使用2个控件,一个datagridview用于显示,一个bindingsource用于存放数据集而让datagridview显示。