我用delphi2010 ado,mysqlocbc3.5 连接mysql5.1adodataset1.commandtext:='select id as "身份证号码", name as "姓名" from customlist where id='+QuotedStr('111111111111111111');adodataset1.open;这个时候,假设有记录,调用 adodataset1.delete 就报错First chance exception at $7C80BEF7. Exception class EOleException with message '[MySQL][ODBC 3.51 Driver][mysqld-5.1.55-community]Unknown column '銆?鍟嗗О? in 'where clause''出现乱码的原因是不能识别别名 身份证号码 作为列名,找不到列名 銆?鍟嗗О? 我的adodataset1和一个dbgrideh绑定,让dbgrideh显示中文字段名方便客户阅读,所以sql语句必须这样写。
我参考了mysql5.1,支持中文列名,我直接用中文做列名都可以ado.delete,这样却不行,有什么设置和变通么,我my.ini
中字符集都用的是utf8。

解决方案 »

  1.   


    我的adodataset和dbgrideh1控件绑定显示中文列名,需要这样构建记录集
      

  2.   

    TDBGridEh支持重命名列名的,具体是设置列的Caption
      

  3.   


    dbgrideh没有caption属性,只有fieldname,sql语句不用别名,设置dbgrideh列的fieldname属性为中文,调用ado.delete方法也出同样的乱码错误。
      

  4.   


    调用 adodataset1.delete  之前用 recordcount 判断记录数
      

  5.   

    这个问题应该用mysql的都会碰到吧,不吝赐教哦
      

  6.   

    升级MySQL ODBC版本试试看,
    低版本驱动连接MySQL5.0是有可能出现乱码问题。新的版本,
    Connector/ODBC 5.1.8:
    http://dev.mysql.com/downloads/connector/odbc/
      

  7.   


    谢谢,下了新odbc小测几个没出错。