日期:2014-05-18  浏览次数:20906 次

.net 里面插入 中文到mysql的时候,插入的数据是乱码?
.net 里面插入 中文到mysql的时候,插入的数据是乱码。
我在mysql里面 直接执行插入有中文的字段是可以的。
比如 insert into `User' values(null,'张三','李四'),这样执行后,可以正常的看到中文。
可是我在.net 里面执行这个语句就不行,请问是什么原因啊。
各位帮帮忙。 mysql我用的编码是latin1

------解决方案--------------------
连接字符串跟编码
------解决方案--------------------
mysql的Charactor设置
.net默认编码按Unicode来 
你的mysql用latin 当然会乱
------解决方案--------------------
把类型改为nvarchar
------解决方案--------------------
编码不同。

你可以先执行
set names gbk

那样你看到的就不是乱码了
------解决方案--------------------
修改my.ini文件
default-character-set=utf8
到这位老兄的资源下载mysql for .net2.0的ODBC驱动
http://download.csdn.net/source/214322
安装完毕之后就可以在VS2005的服务器资源管理器中添加数据连接
在数据源选项中点击[更改]选择其他,你会在[数据提供程序]中看到.NET Framework Data Provider for MySQL
server name填写你的mysql服务器的ip地址,本机填写localhost
user name 和password 和database name照实填写,选择save my password
然后进入[高级]选项
将advanced中的character set 设置为utf8 点击[确定]至此所有设置完毕
测试连接----提示连接正常
生成的连接字符串如下
server=localhost;user id=root;Password=root;persist security info=True;database=webdata;character set=utf8//密码是隐藏的,其实字符串中不会出现密码,但是在asp.net中会在web配置文件中出现密码

连接字符串中的character set一定要和数据库的character set一致!

使用 MySql.Data.MySqlClient这个名空间来连接 MySQL 服务器。
在C#中,可以使用using语句来引入MySQL数据接口:

using MySql.Data.MySqlClient;

指定了名空间后,我们就可以和MySQL数据库进行数据交互了。 
MySql.Data.MySqlClient这个名空间提供了许多用于处理MySQL数据的类。
下面是这些类的一个样本:

  * MySqlConnection: 管理和 MySQL 服务器/数据库的连接;

  * MySqlDataAdapter: 一套用于填充DataSet对象和更新MySQL数据库的命令和连接的集合;

  * MySqlDataReader: 让你能够从一个 MySQL 数据库读取数据。它是一个单向的数据流;

  * MySqlCommand: 提供向数据库服务器发送指令的功能;

  * MySqlException: 当发生问题时提供例外处理。

  ASP.NET和MySQL的组合
  用 MySqlCommand 对象向MySQL服务器发送 SHOW DATABASES 命令和直接在 MySQL 管理工具中输入这个命令得结果是一样的。唯一的区别是,我们在代码中必须使用另一个对象来获取结果集。MySqlDataReader 对象在获取结果时被实例化(通过 MySqlCommand 类的 ExecuteReader 方法)。MySqlDataReader 对象的 GetString 方法被用于通过ASP.NET的标签控制来显示结果集中的数据。GetString 方法的指针0指定了显示结果集的当前行(在while循环中)的第一列数据。
=============================================================================================================
连接:

string connStr = "server=localhost;user id=root; password=; database=aa; pooling=false";//

连接字符串

以下为引用的内容:
MySqlConnection conn = new MySqlConnection( connStr );//构造数据库连接

try
{
conn.Open();//打开连接
MySqlCommand cmd = new MySqlCommand("select * from user",conn);//构造查询命令
this.DataGrid1.DataSource=cmd.ExecuteReader();//执行查询,返回一个DataReader,设置DataGrid1的数据源为该DataReader
this.DataGrid1.DataBind();//DataGrid1数据绑定
conn.Close();//关闭连接
}
catch(MySqlException ex) //捕获异常
{
Response.Write(ex.Message);//向页面写异常