create table person(
id char(20) not null,
name char(50) not null,
primary key(id)
)DEFAULT CHARSET=gbk;
建好了表,C#编程查询读取的中文已经没有问题了
在是C#代码中插入数据还是会乱码,
insert into person values('1234','张三');
如果在MySQL Command Line Client下输入是上面的语句,查询出来的是中文
使用的是 MySql.Data.dll
求有经验的帮忙一下,比较急

解决方案 »

  1.   

    MySQLCommand commn = new MySQLCommand("set names gbk", conn);
      

  2.   

    mysql> use smsp;
    Database changed
    mysql> select * from person;
    +------+--------+
    | id   | name   |
    +------+--------+
    | 1234 | 张三丰 |
    +------+--------+
    1 row in set (0.00 sec)mysql> delete from person where id='1234';
    Query OK, 1 row affected (0.05 sec)mysql> select * from person;
    Empty set (0.00 sec)mysql> select * from person;
    +------+------+
    | id   | name |
    +------+------+
    | 1234 | ??   |
    +------+------+
    1 row in set (0.00 sec)mysql>
    static void Main(string[] args)
    {
        MySqlConnection m_conn = null;
        string url = "Database=smsp;Data Source=192.168.10.167;User Id=root;Password=ccqgf";
        m_conn = new MySqlConnection(url);
        m_conn.Open();    string sql = "set names gbk;";
        MySqlCommand command = new MySqlCommand(sql, m_conn);
        command.ExecuteNonQuery();    sql = "insert into person values('1234','张三');";
        command = new MySqlCommand(sql, m_conn);
        command.ExecuteNonQuery();    m_conn.Close();
    }
    Person表里面原有一条数据,删除后,再运行此段代码, 查询到的还是乱码
    求各位帮下忙,难道是我引用的dll有问题,
    有空的可以帮忙写代码测试一下,如果有测试成功的,分享一下经验
      

  3.   

    command line下?他跟unicode编码机制的驱动根本是两回事,放到数据库中的当然就是乱的了。不要使用commandline。使用基于.net驱动的管理工具,例如vs里边的数据库服务器来管理窗口来管理数据库,不要使用命令行工具。
      

  4.   

    具体情况是,使用C#代码在表中插入中文数据的时候,command line和代码查询结果都是乱码
    而使用command line插入中文数据,command line和代码查询结果中文能够正常现在的问题是,要怎么样才能够使用代码插入数据中文能够正常呢,需要进行什么处理?
      

  5.   

    找到解决办法了static void Main(string[] args)
    {
        MySqlConnection m_conn = null;
        string url = "Database=smsp;Data Source=192.168.10.167;User Id=root;Password=ccqgf;charset=gbk;";//在这里增加 charset=gbk,而不是在sql前面增加 set names gbk;
        m_conn = new MySqlConnection(url);
        m_conn.Open();    string sql = "insert into person values('1234','张三');";
        MySqlCommand command = new MySqlCommand(sql, m_conn);
            command.ExecuteNonQuery();    m_conn.Close();
    }