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显示。

 

 

C连接MySQL需要使用MySQL连接器,并且需要引用System.Data命名空间和MySql.Data.MySqlClient命名空间。下面是一个示例代码,展示了如何使用C#连接MySQL数据库: ```csharp using System; using System.Data; using MySql.Data.MySqlClient; public class MySQLConnector { private MySqlConnection connection; public MySQLConnector(string connectionString) { connection = new MySqlConnection(connectionString); } public void Connect() { try { connection.Open(); Console.WriteLine("数据库连接成功!"); } catch (Exception ex) { Console.WriteLine("数据库连接失败:" + ex.Message); } } public void Disconnect() { connection.Close(); Console.WriteLine("数据库连接已断开!"); } public DataTable SelectData(string tableName, string columns, string condition) { DataTable dataTable = new DataTable(); string sql = ""; if (string.IsNullOrEmpty(condition)) { sql = "SELECT " + columns + " FROM " + tableName; } else { sql = "SELECT " + columns + " FROM " + tableName + " WHERE " + condition; } MySqlCommand command = new MySqlCommand(sql, connection); MySqlDataAdapter adapter = new MySqlDataAdapter(command); adapter.Fill(dataTable); return dataTable; } public int UpdateData(string tableName, string columnsAndValues, string condition) { string sql = "UPDATE " + tableName + " SET " + columnsAndValues + " WHERE " + condition; MySqlCommand command = new MySqlCommand(sql, connection); int rowsAffected = command.ExecuteNonQuery(); return rowsAffected; } } ``` 以上代码展示了一个MySQL连接器的基本操作,包括连接数据库、断开连接、查询数据和修改数据。你可以根据自己的需求进行相应的修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值