我在VC中通过CADODatabase接口类访问mysql库,使用mysql站点下载的oledb3.0连接,可以成功连接,并执行查询语句。连接串:Provider=MySQLProv;Location=服务器ip;Data Source=数据库名;User Id=xxx;Password=xxxxx现在想在程序中执行一条插入语句,发现字段值为中文时,执行sql会出错,改为英文可成功。分析是由于mysql与vc的编码不兼容的缘故,请问大家有没有解决方法。诚心求解!出错代码为:strSQL="insert into prd_automail_sendmail (mailto,subject,body,sendtime,sendtag) values(\'[email protected]\',\'您有邮件\',\'有张精美贺卡\',\'2005-1-11 14:09:00\',0)";

m_DB.Execute(strSQL);

解决方案 »

  1.   

    MYSQL中有一个关于数据编码的设置,你把它设置为uncode吧
      

  2.   

    看看这个行不
    Provider=MySQLProv;Location=服务器ip;Data Source=数据库名;User Id=xxx;Password=xxxxx;useUnicode=true
      

  3.   

    谢谢大家的帮忙:) iamluodong(嗨) ,怎么给你发?信箱?或者你去这个地方直接下
    http://dev.mysql.com/get/Downloads/Win32/MyOLEDB3.exe/from/http://mysql.ihostunit.com/
      

  4.   

    为什么不通mysql提供的CDataBase类的函数来连接mysql呢,要用ADO的形式呢?
      

  5.   

    因为之前一直用ADO类访问Sql Server,延续下来形成习惯,实在不行就只好换其它方法
      

  6.   

    看来你不能通过拼串的方式了,myoledb实现上有问题,你的连接串不用改,我用vb写了一段,你应该能看懂
    Dim conn As New ADODB.Connection
        Dim cmd As New ADODB.Command
        Set conn = New ADODB.Connection
        Set cmd = New ADODB.Command
        
        conn.ConnectionString = "Provider=MySQLProv;Location=localhost;Data Source=test;User Id=root"
        conn.Open
       
            
        Dim rst As Recordset
        Set rst = New ADODB.Recordset
        conn.CursorLocation = adUseClient  '游标一定设置这种模式
        rst.Open "select * from table2 where 1<>1", conn, adOpenKeyset, adLockOptimistic
        
        rst.AddNew
       
        
        rst.Fields("field2").Value = "测试中文"
        rst.Update
        
        conn.Close
        Set conn = Nothing
      

  7.   

    这是用oledb连的吗?我现在基本确定问题出在编码方式上,VC和mysql的中文编码不同,该怎么解决呢?
      

  8.   

    oledb是一组COM接口,我上面的程序是拿VB实现的,com用的都是UNICODE,编码是相同的,这应该是
    官方驱动的BUG