c# 连接MySql

来源:互联网 发布:linux 时钟同步方法 编辑:程序博客网 时间:2024/04/30 05:24

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

 

 

原创粉丝点击