网上关于解决mysql中文问题的文章很多。也确实能解决不少问题。我遇到的问题是:我已经解决好了数据库那边的中文,中文都可以插入数据库了。但是我在winform中,使用:
MySQLDataAdapter mda = new MySQLDataAdapter(sql, connection());
DataSet ds = new DataSet();
mda.Fill(ds);
这样的语句时,英文没有问题,可以查询成功,但是当我查询的结果是中文时,mda.Fill(ds)会这样的异常:
MySQLDriverCS Exception: MySQLDriverCS Error: wrong query.Illegal mix of collations (gb2312_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='请问大家这该怎么解决啊?感激不尽。我用的c# winform开发。
MySQLDataAdapter mda = new MySQLDataAdapter(sql, connection());
DataSet ds = new DataSet();
mda.Fill(ds);
这样的语句时,英文没有问题,可以查询成功,但是当我查询的结果是中文时,mda.Fill(ds)会这样的异常:
MySQLDriverCS Exception: MySQLDriverCS Error: wrong query.Illegal mix of collations (gb2312_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='请问大家这该怎么解决啊?感激不尽。我用的c# winform开发。
MySQL 中文显示乱码
MySQLDataAdapter mda = new MySQLDataAdapter(sql, connection());
中的sql是我的查询语句:select * from base where bookname="数学"
网上查到的解决办法多是关于数据库那边中文的问题
然后,我在程序中,添加上了 MySQLCommand comd = new MySQLCommand("set name gb2312", conn);就是set name "gb2312";
但还是查询时,还是显示不了中文,显示结果时还是??,而我的程序中还是有同样的异常
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user | CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`pwd` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=gb2312 |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in setmysql> show full columns from user;
+-------+--------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+-------+--------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| id | int(11) | NULL | NO | PRI | NULL | auto_increment | select,insert,update,references | |
| name | varchar(255) | gb2312_chinese_ci | NO | | NULL | | select,insert,update,references | |
| pwd | varchar(255) | gb2312_chinese_ci | NO | | NULL | | select,insert,update,references | |
+-------+--------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
3 rows in setmysql> show variables like 'char%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | gb2312 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | gb2312 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in setmysql>
我只有使用odbc来连接了。郁闷啊......
然后再试试。