`
ljl_xyf
  • 浏览: 634482 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

c#连接mysql中文乱码解决方案(MySql.Data.dll)

    博客分类:
  • php
php 
阅读更多

今天用C#类连接mysql数据库出现中文乱码具体解决方案如下:

 

用到的mysql表结构:

CREATE TABLE IF NOT EXISTS `tet` (
  `id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `url` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

用到的mysql表数据:

INSERT INTO `tet` (`id`, `name`, `url`) VALUES
(1, '百度 ', 'http://www.baidu.com '),
(0, 'google ', 'http://www.google.com.hk '),
(3, '400电话 ', 'http://www.my400800.cn ');

 

 

一、查询结果没有问题,在查询条件中如果输入中文查询不到内容,用insert测试为,插入的内容是乱码

    

 

      首先在MySQL Command Line Client里面输入“SHOW VARIABLES LIKE 'character_set_%';”,可看到如下字符:

 

Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir C:\Program Files\VertrigoServ\Mysql\share\charsets\

 

可以用如下连接字符串解决中文乱码问题

User Id=test;Host=localhost;Database=eczhou;password=test;charset='gb2312'

 

二、检索结果和插入内容都是乱码

用MySQL Command Line Client里面输入“SHOW VARIABLES LIKE 'character_set_%';”,可看到如下字符:

 

Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/

 

即便是连接字符串改成

User Id=test;Host=localhost;Database=eczhou;password=test;charset=utf8 检索的结果还是乱码

郁闷中。。。。。。。

 

然后用  show variables like 'collation%';显示结果是:

+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+

 

show variables like 'character%';

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |

| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

 

经过不懈努力的查找,终于找到问题了,问题就出在上面红色字体的编码上,我的解决方法如下:

连接字符串修改如下:

server=localhost;uid=root;pwd=root;database=test;Charset=latin1

 

c#代码如下:

 /// <summary>
        /// 执行查询语句,返回DataSet
        /// </summary>
        /// <param name="SQLString">查询语句</param>
        /// <returns>DataSet</returns>
        public static DataSet Query(string SQLString)
        {
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                DataSet ds = new DataSet();
            
                try
                {
                    connection.Open();
                    MySqlCommand M = new MySqlCommand("set names 'latin1'", connection);
                    M.ExecuteNonQuery();

                    //

                    MySqlDataAdapter da = new MySqlDataAdapter(SQLString, connection);
                    da.Fill(ds);
                }
                catch (MySqlException ex)
                {
                    connection.Close();
                    throw new Exception(ex.Message);
                }
                finally
                {
                    connection.Close();
                }
                DataTable dt = ds.Tables[0];
                foreach (DataRow dr in dt.Rows)
                {
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        dr[i] = Encoding.UTF8.GetString(Encoding.GetEncoding("latin1").GetBytes(dr[i].ToString()));
                    }


                }

                return ds;
            }
        }

 

一定要注意上面的红色字体。

 

 

 

 

 

分享到:
评论

相关推荐

    C#连接MySQL需要的MySql.Data.dll,MySql.Web.dll

    在C#编程环境中,连接MySQL数据库通常依赖于特定的数据提供者,这就是MySql.Data.dll和MySql.Web.dll的角色。这两个动态链接库(DLL)文件是MySQL官方提供的.NET数据访问组件,使得C#开发者能够轻松地与MySQL服务器...

    C#连接mysql的Mysql.data.dll 5.0.8.1和6.2.1.0

    本篇文章将详细探讨如何使用C#连接MySQL数据库,特别是针对Mysql.data.dll版本5.0.8.1和6.2.1.0。 首先,`Mysql.data.dll`是MySQL官方提供的.NET数据提供程序,它实现了ADO.NET接口,使得C#应用程序能够与MySQL...

    .Net/C#连接Mysql数据库Connector/Net MySql.Data.dll 8.20.0+6.9.12

    C#通过MySql.Data.dll连接MySql数据库 在项目中引用组件:MySql.Data.dll (记得复制到本地中选择为true / 或直接把MySql.Data.dll复制到debug文件夹下) 在代码中 using MySql.Data.MySqlClient; ......接下来这里...

    MySql.Data.dll8.0类库

    MySQL.Data.dll是MySQL数据库连接器的一个重要组成部分,主要用于C#和其他.NET Framework应用程序与MySQL服务器进行交互。这个8.0版本的类库提供了丰富的API,使开发者能够方便地执行SQL查询、管理数据库对象以及...

    C# MySQL.data.dll 各版本下载 用于连接mysql数据库 历史最全 分32位系统与64位系统

    总的来说,`MySQL.data.dll`是C#程序员连接到MySQL数据库的关键组件。这个压缩包提供的多个版本覆盖了广泛的.NET框架,确保了对不同环境的兼容性。为了确保最佳性能和稳定性,开发者应该根据项目需求选择合适的版本...

    用于mysql8.0版本的MySql.Data.dll类库,直接引用使用

    用于mysql8.0版本的MySql.Data.dll类库,直接引用使用

    C#调用MySQL数据库(使用MySql.Data.dll连接)

    (1)建立连接: MySqlConnectionsqlCon= new MySqlConnection("Database=数据库名字;Data Source=服务器的ip地址;User Id=用户名;Password=用户密码"); 或者: MySqlConnectionsqlCon= new MySqlConnection(...

    C#操作Mysql数据库的MySql.Data.dll下载

    这通常可以通过在解决方案资源管理器中右键点击“引用”目录,选择“添加引用”,然后在浏览选项中找到MySql.Data.dll来完成。对于不同版本的MySQL数据库,可能需要对应版本的MySql.Data.dll,以确保兼容性。 接...

    各版本mysql.data.dll文件

    MySQL.Data.dll是MySQL数据库连接器的一个重要组件,主要用于.NET应用程序与MySQL服务器之间的数据交互。这个文件是.NET Framework的一部分,允许开发者使用C#、VB.NET或其他.NET支持的语言来编写能够访问MySQL...

    SqlSugar连接Mysql指定Mysql.Data.dll的版本,MySql.Data.dll 6.2.1.0

    Sqlguar的源码中对MySql.Data.dll 做了强引用,版本必须为6.2.1.0,否则会报错。NuGet中的是最新的,所以基本上不能用,会报错: 需要引用MySql.Data.dll,请在Nuget安装最新稳定版本,如果有版本兼容问题请先删除原有...

    MySql.Data.dll .net2.0版本

    MySQL.Data.dll是MySQL数据库连接器的一个重要组成部分,主要用于.NET Framework 2.0应用程序与MySQL服务器之间的数据交互。这个DLL文件是MySQL官方提供的,允许开发者在使用C#、VB.NET或其他.NET支持的语言时,轻松...

    MySql.Data.dll(.NET4.0版本)

    MySQL.Data.dll是MySQL数据库连接器的一个重要组件,用于.NET Framework 4.0环境下的C#开发者,它使得C#应用程序能够方便地与MySQL数据库进行交互。这个库包含了各种类和方法,允许开发者执行SQL查询、管理数据库...

    MySql.Data.dll For C#

    MySQL.Data.dll 是一个重要的.NET框架库,专门为C#开发者提供与MySQL数据库交互的功能。这个库使得在C#环境中,开发者可以像操作SQL Server那样方便地操作MySQL数据库,大大简化了跨平台数据库应用的开发工作。 ...

    C#通过MySql.Data.dll连接MySql数据库操作

    MySql.Data.dll 下载 实例: /// &lt;summary&gt; /// MySQL数据库操作 /// author:hhm /// date:2012-2-22 /// &lt;/summary&gt; public class MySqlDbHelper { #region 私有变量 private const string defaultConfigKeyName =...

    mysql.data.dll

    MySQL数据访问库MySQL.data.dll是用于连接和操作MySQL数据库的关键组件,主要在.NET环境中使用,如Visual Studio(VS)项目。这个DLL文件包含了.NET开发者所需的API,使得他们能够通过C#、VB.NET或其他.NET支持的...

    .Net/C# 连接Mysql数据库(MySql.Data.dll)最新版(v6.10.6.0)

    把MySql.Data.dll放到工程debug文件夹下,然后在应用工程中引用组件:MySql.Data.dll 在代码页中:using MySql.Data.MySqlClient;

    MySql.Data.dll 8.0.30最新版

    MySql.Data.dll 8.0.30最新版

    mysql.data.dll(6.9.9)

    MySQL.Data.dll是MySQL数据库连接器的一个重要组件,主要用于.NET应用程序与MySQL服务器之间的数据交互。这个6.9.9版本的动态链接库(DLL)文件包含了必要的API和类库,使得开发人员能够在C#、VB.NET或其他.NET支持...

    .net访问mysql数据库必须的文件MySql.Data.dll(2019-03最新版 v8.0.15.0)

    7. **连接池**:`MySql.Data.dll`支持连接池,这是.NET Framework的一部分,能重用已建立的连接,从而提高性能并减少资源消耗。 8. **元数据访问**:`MySqlSchemaProvider`允许开发者获取关于数据库架构的信息,如...

    mysql.data.dll(.net 4.0或以前版本)

    MySQL.data.dll是MySQL数据库连接器的一个重要组件,主要用于.NET Framework 2.0、3.0、3.5和4.0版本。这个DLL文件是MySql Connector/NET的一部分,允许开发人员在使用.NET Framework开发的应用程序中与MySQL数据库...

Global site tag (gtag.js) - Google Analytics