使用环境是Delphi7 + sqlconnection + sqldataset + dbxopenmysql50.dll + mysql5.0
  sqldataset1.CommandText:='SELECT * FROM test WHERE (sta=:abc)';
  sqldataset1.ParamByName('abc').AsString :=str1;
  sqldataset1.Active:=true;
  sqldataset1.Open ;
以上在连接mysql的时候会提示:
有哪位知道该怎么办吗?

解决方案 »

  1.   

    记得好象可以在关联的后面加上collage_database default就可以啦,好象是这样写,忘记啦
      

  2.   

    collage_database default
    没有找到合适的用法啊
      

  3.   


      sqldataset1.Active:=false;
      sqldataset1.CommandText:='SELECT * FROM test WHERE sta='+#39+str1+#39';
      sqldataset1.Active:=true;
      

  4.   

    4楼的代码执行后没有出错,但是mysql也没有查询到任何数据
      

  5.   

    +----------------------+-------------------+
    | Variable_name        | Value             |
    +----------------------+-------------------+
    | collation_connection | latin1_swedish_ci | 
    | collation_database   | gb2312_chinese_ci | 
    | collation_server     | gb2312_chinese_ci | 
    +----------------------+-------------------+
    这是数据库的设置,collation_connection改了一下午怎么都改不成gb2312
      

  6.   

    sqldataset1.CommandText:='SELECT * FROM test WHERE (sta=:abc)';
    将上句改成如下试试:(MS SQL是可以的)
    sqldataset1.CommandText := 'SELECT * FROM test WHERE sta = :abc collate database_default ';
      

  7.   

    经过N次测试后发现
    (1)mysql以utf8默认字符启动,以下查询语句可以正确执行(返回的条目数量是正确的),但是select返回的中文字符全部都是乱码
    sqldataset1.CommandText:='SELECT * FROM test WHERE (sta= _utf8 :abc COLLATE utf8_unicode_ci)';
    result:=Form1.sqldataset1.Fields.Fields[0].AsString;(2)mysql以gb2312默认字符启动,以下查询语句可以运行通过但是返回条数为0(查询结果不正确),select返回的中文字符还是乱码
    sqldataset1.CommandText:='SELECT * FROM test WHERE (sta= _utf8 :abc COLLATE utf8_unicode_ci)';
    result:=Form1.sqldataset1.Fields.Fields[0].AsString;还是不成功
      

  8.   

    http://blog.sina.com.cn/s/blog_59b0e3f30100exqx.html
    还是改字符集吧,改配置文件,用命令,不可能改不成功的MYSQL 字符集问题
    MySQL的字符集支持(Character Set Support)有两个方面:
       字符集(Character set)和排序方式(Collation)。
    对于字符集的支持细化到四个层次:
       服务器(server),数据库(database),数据表(table)和连接(connection)。服务器端的,客户端的都改,不行每个表也改字符集,最终肯定是可以正确显示中文的
      

  9.   

    我这mysql里character_set_system是不能修改的,其他可以全部改成utf8或者gb2312Delphi7里没有找到对应的方法
      

  10.   


    不是D7的问题,你的MySQL字符集的设置问题,11楼已经说得很明白啦
      

  11.   

    在运行SQL之前,先运行一下这条SQL语句。
     SQ.SQL.text := 'set names gb2312';
      

  12.   

    连接成功了,"set names gb2312"可以正常执行
      

  13.   

    不要用参数,直接写好SQL语句行不?
      

  14.   

    sqldataset1.Active:=false;  //关闭
    sqldataset1.CommandText:='SELECT * FROM test WHERE (sta=:abc)'; //语句
    sqldataset1.Active:=true;  // 打开sqldataset1.ParamByName('abc').AsString :=str1; //再修改