采用的是 MySQL 5.5.15,一路设置都是默认的现有表
create table person(
id char(20) not null,
name char(50) not null,
primary key(id)
);使用 MySql.Data.dll 操作数据库public int ExecuteNonQuery(string sql)
{
MySqlCommand command = new MySqlCommand(sql, m_conn);
return command.ExecuteNonQuery();
}public DataTable ExecuteQuery(string sql)
{
DataTable dt = null;
MySqlDataAdapter mda = null;
try
{
mda = new MySqlDataAdapter(sql, m_conn);
dt = new DataTable();
mda.Fill(dt);
}
catch { }
return dt;
}现在有 sql 语句 insert into person vaules ('12345678', '张三丰')
当我在 mysql command line client 输入并执行完毕后,在mysql command line client下查询 select * from person 的结果能够显示中文
但是我如果在程序中调用 ExecuteNonQuery(sql) ,在mysql command line client下查询 select * from person 的结果,名字一列是乱码的
还有包含中文,我在程序调用 DataTable ExecuteQuery(string sql) 得到的结果也是乱码的mysql> select * from customer;
+----------+--------+
| id | name |
+----------+--------+
| 12345678 | 张三丰 |
+----------+--------+
1 row in set (0.00 sec)mysql> show variables like "char%";
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | latin1
|
| character_set_connection | latin1
|
| character_set_database | latin1
|
| character_set_filesystem | binary
|
| character_set_results | latin1
|
| character_set_server | latin1
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)
请教一下高手们应该怎么解决这个问题
create table person(
id char(20) not null,
name char(50) not null,
primary key(id)
);使用 MySql.Data.dll 操作数据库public int ExecuteNonQuery(string sql)
{
MySqlCommand command = new MySqlCommand(sql, m_conn);
return command.ExecuteNonQuery();
}public DataTable ExecuteQuery(string sql)
{
DataTable dt = null;
MySqlDataAdapter mda = null;
try
{
mda = new MySqlDataAdapter(sql, m_conn);
dt = new DataTable();
mda.Fill(dt);
}
catch { }
return dt;
}现在有 sql 语句 insert into person vaules ('12345678', '张三丰')
当我在 mysql command line client 输入并执行完毕后,在mysql command line client下查询 select * from person 的结果能够显示中文
但是我如果在程序中调用 ExecuteNonQuery(sql) ,在mysql command line client下查询 select * from person 的结果,名字一列是乱码的
还有包含中文,我在程序调用 DataTable ExecuteQuery(string sql) 得到的结果也是乱码的mysql> select * from customer;
+----------+--------+
| id | name |
+----------+--------+
| 12345678 | 张三丰 |
+----------+--------+
1 row in set (0.00 sec)mysql> show variables like "char%";
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | latin1
|
| character_set_connection | latin1
|
| character_set_database | latin1
|
| character_set_filesystem | binary
|
| character_set_results | latin1
|
| character_set_server | latin1
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)
请教一下高手们应该怎么解决这个问题
解决方案 »
- 求助。表1有a、b两值,表2有c d e f四值,如何配对产生新表?
- 此语句何处有误?
- 如何在分组数据中选择某种顺序的数据?
- MYSQL中,有没有像在MSSQL的master.dbo.sysdatabases 保存着所有的数据库名称, xxxxxxx.dbo.sysobjects这样保存着所有的表名字段名等信息的系统表
- 查询语句
- 新手求值,如何实现以下简单的查找功能?
- MySQL 恢复问题请教
- MySQL中,有无GUID函数?就像SQL Server中的newid()
- 在线等待,mysqldump在mysql5.0中无法备份存储过程和触发器
- 求助 中文 like '% %'的情况怎么用索引?
- 用json方式保存数据入库,有什么优点吗?
- 求教一条更新语句
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
最后结果
得到的名字还是 ????·á set names 'gb2312' 也试了,效果一样
调试的时候看了,在查询结果里面 DataRow name列的值就是乱码的
id char(20) not null,
name char(50) not null,
primary key(id)
)DEFAULT CHARSET=gbk;然后set names gbk;
mysql> show create table person;
+----------+--------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------+
| Table | Create Table |
+----------+--------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------+
| customer | CREATE TABLE `person` (
`id` char(30) NOT NULL,
`name` char(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+----------+--------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------+
1 row in set (0.00 sec)现在的情况是,我在mysql command line client 下面输入
inert into person values('1234','张三丰');
在程序里面 select * from person; 查询出来的结果,即使没有在前面增加 set names gbk; 也是能够显示中文的但是用代码存入表的时候,比如
sql = " set names bgk; inert into person values('12345','张三丰'); "
表里面是乱码的,查询出来的也是乱码
解决方法是string url = "Database=db;Data Source=localhost;User Id=user;Password=pwd;charset=gbk;";//在这里增加设定
MySqlConnection m_conn = new MySqlConnection(url);