在access数据库中只要有“マイ フレンド”类似的日文或者韩文内容,如果BCB,Delphi等编程语言中使用ado查询,在查询语句中使用了"name like '%王%'"语句,例如:
select * from db1 where name like '%王%'"那么就会出现内存溢出的问题,怎么解决啊?但是如果在sql server数据库就不会有这种问题;先要说明的绝对不是内存的问题,如果不信,你只要在数据库中加入一条包含“マイ フレンド”内容的记录,都会出错,大家可以试试;我在论坛上找了相关帖子,发现也有很多人出现这个问题,但是都没有相应的解决办法,这个问题也一直困扰着我,如果有高手,不凡出来指点一下,谢谢,分不够可以再加,只要能解决

解决方案 »

  1.   

    是不是因为access数据库不支持多国语言呀? 你一定要在中文数据库中录入日文等?
    是不是要用encode処理...
      

  2.   

    可能ACCESS不是UNICODE编码,我也觉得是这样
      

  3.   

    有什么好的解决办法吗?如果换成vfp数据库如何?Ado支持vfp吗?
      

  4.   

    ACCESS不太清楚,但是以前我在SQLSERVER下用如下办法来达到查询Unicode文字的功能,可以参考一下:function EncodeUnicodeSQL(Value:WideString):String;
    //encode the widestring to string of unicode ascii set
    //be used for search unicode char in SQL server
    //2003.03.21
    var
      I:Integer;
    begin
      Result:='';
      for I:=1 to Length(Value) do begin
        if I>1 then begin
          Result:=Result+'+';
        end;
        Result:=Result+'NCHAR('+IntToStr(Word(Value[I]))+')';
      end;
    end;    if Length(MusicName)>0 then begin
          sql:=' (music_name LIKE ''%'' + ' + EncodeUnicodeSQL(MusicName) + ' + ''%'')';
        end;
      

  5.   

    To tonylk(=www.tonixsoft.com=) :在sql server里面根本就不会出现内存溢出错误,一切正常;你用的
    if Length(MusicName)>0 then begin
          sql:=' (music_name LIKE ''%'' + ' + EncodeUnicodeSQL(MusicName) + ' + ''%'')';
    只是把关键词Unicode,并没有处理记录里面的内容
      

  6.   

    对的,有可能ACCESS在处理你的SQL文时就出错了,所以给你这样的代码试验一下而已。。
    另外,使用Unicode的字段呢?也试一下吧。
      

  7.   

    可以尝试将文字全部转换为某种ASCII码后再保存到数据库,查询时也使用该转换后的文字进行查询。。当然,这样麻烦了点。。
    还有,升级MDAC呢?如果真是ACCESS的bug,微软不可能不修正它。
      

  8.   

    可以尝试将文字全部转换为某种ASCII码后再保存到数据库,这个办法倒是不错,是个好主意.在access中怎么设置使用Unicode的字段啊?不好意思,这个不会,以前没有设置过;能教教我吗?
      

  9.   

    我的系统是2003的系统,微软网站说MDAC是2.8版的