c# 连接MySql

开发工具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显示。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值