none
C#操作MYSQL乱码,添加的时候提示错误、提示看到的SQL语句中有乱码! RRS feed

  • 问题

  • C#操作MYSQL乱码,添加的时候提示错误、提示看到的SQL语句中有乱码! mysql是版本5的。Navicat for MySQL工具上的链接属性上看到的是UTF-8的。
    private static string mysqlconnectionstring
            {
                get { return "Data Source=localhost;User ID=root;Password=123456;Initial Catalog=mytest;Pooling=true"; }
                //;
            }
    
            private static MySqlConnection Conn()
            {
                MySqlConnection cn = new MySqlConnection(mysqlconnectionstring);
                
                cn.Open();
                return cn;
            }
            public static MySqlCommand Command(MySqlConnection cn, CommandType TextType, string sqltext)
            {
                MySqlCommand cmd = cn.CreateCommand();
                 cmd.CommandType = TextType;
                cmd.CommandText = sqltext;
                //cmd.CommandTimeout = 60;
                return cmd;
            }
            public static int ExecuteNonQuery(string sqltext)
            {
                int result = -1;
                try
                {
                    MySqlCommand cmd=Conn().CreateCommand();
                    cmd.CommandText = sqltext;//(这里不乱码) 
                    cmd.CommandType = CommandType.Text;
                    cmd.ExecuteNonQuery();
                    result = (int)cmd.LastInsertedId;
                    cmd.Dispose();
                }
                catch (Exception ex)
                {
                    throw new ApplicationException(ex.Message);//这里错误提示出来就是乱码
                }
                return result;
            }
    异常信息
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' '1242866579', '1242866579', '127.0.0.1', '??Database Control - orcl?????? ???SY' at line 1 数据库连接字符串我试过
    //get { return "server=localhost;user id=root; password=123456; database=mytest; pooling=false;charset=utf8"; }
    //get { return "server=localhost;user id=root; password=123456; database=mytest; pooling=false;charset=gb2312"; }

    搞不明白是怎么回事了,对MYSQL不熟悉!各位帮个忙!
    I don'nt know who my grandfather was. I' m much more concerned to know what his grandson will be.
    2009年5月21日 2:17

答案

  • 谢谢两位。问题已经解决!
    这个怎么就不行!
    Data Source=localhost;User ID=root;Password=123456;Initial Catalog=mytest;Pooling=true;charset=gb2312

    用这个就可以。
    Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; CharSet=gb2312;


    I don'nt know who my grandfather was. I' m much more concerned to know what his grandson will be.
    2009年5月23日 0:35

全部回复

  • 1、 在连接字符串中加入 charset='utf-8' 或 charset='gb2312' 如果未能解决,尝试下面的方式
    2、选用gb2312编码 
    3、设置my.ini文件中的默认编码 
       分别在[mysql]和[mysqld]配置段中增加或修改default_charater_set=gb2312 
    4、创建数据库时编码选用gb2312 
    5、创建表时编码选用gb2312,Collation选用gb2312_chines_ci(gb2312_bin没有去试验) 
    6、针对具体需要存放中文的字段设定编码选用gb2312,Collation选用


    知识改变命运,奋斗成就人生!
    2009年5月21日 3:59
    版主
  • 我用的是C#写的winform程序!你说的这些好像都不能在程序里吧,
    I don'nt know who my grandfather was. I' m much more concerned to know what his grandson will be.
    2009年5月21日 6:01
  • 1是设置连接字符串 如 "Data Source=localhost;User ID=root;Password=123456;Initial Catalog=mytest;Pooling=true;charset=utf-8 ";
    2其它的是设置 My Sql


    知识改变命运,奋斗成就人生!
    2009年5月21日 6:05
    版主
  • 连接字符串是:server=localhost;user id=root; password=123456; database=dedecmsv53gbk; pooling=true;charset=utf-8
    测试出错!!
    提示:Unknown character set: 'utf'

    设置成GB2312不行!!!!
    I don'nt know who my grandfather was. I' m much more concerned to know what his grandson will be.
    2009年5月21日 6:29
  • 你好!
         你这样试试:
         连接字符串中useUnicode设置为true, characterEncoding设置为 gb2312
    周雪峰
    2009年5月21日 10:14
    版主

  • Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; CharSet=UTF8;
    Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; CharSet=gb2312;

    知识改变命运,奋斗成就人生!
    2009年5月21日 12:04
    版主
  • 谢谢两位。问题已经解决!
    这个怎么就不行!
    Data Source=localhost;User ID=root;Password=123456;Initial Catalog=mytest;Pooling=true;charset=gb2312

    用这个就可以。
    Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; CharSet=gb2312;


    I don'nt know who my grandfather was. I' m much more concerned to know what his grandson will be.
    2009年5月23日 0:35
  • 这个就不清楚了
    知识改变命运,奋斗成就人生!
    2009年5月23日 6:19
    版主
  • 大小写敏感吧
    紫柔版主的头像真叫萌得一个不行啊。。。。
    2009年5月26日 4:50
    版主