电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> Asp>>Asp之ACCESS数据库遇日文时内存溢出的处理办法:

Asp之ACCESS数据库遇日文时内存溢出的处理办法

来源:网络 | 2007-4-6 | (有3181人读过)

ACCESS有个BUG,那就是在使用 like 搜索时如果遇到日文就会出现“内存溢出”的问题,提示“80040e14/内存溢出”。 

以前也遇到过了,不过那时没怎么在意把含有日文的数据删除了就好了,现在这次的都是些重要的资料不可能删除的,就需要想办法来解决了。 

那导致出问题的26个日文:ゴ ガ ギ グ ゲ ザ ジ ズ ヅ デ ド ポ ベ プ ビ パ ヴ ボ ペ ブ ピ バ ヂ ダ ゾ ゼ  

说一下解决办法: 

1、最笨的方法:删除含有日文的数据 
    
这就不用解释了; 

2、替换方法: 

思路:就是存储进入数据库时把那26个日文替换成别的编码,在从数据库取出来后在反替换回来; 

从网上找了个现成的函数: 
编码: 
Function Jencode(byVal iStr) 
if isnull(iStr) or isEmpty(iStr) then 
Jencode="" 
Exit function 
end if 
dim F,i,E 
’ F=array("ゴ","ガ","ギ","グ","ゲ","ザ","ジ","ズ","ヅ","デ",_ 
’ "ド","ポ","ベ","プ","ビ","パ","ヴ","ボ","ペ","ブ","ピ","バ",_ 
’ "ヂ","ダ","ゾ","ゼ") 
E=array("Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;","Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;","Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;","Jn21;","Jn22;","Jn23;","Jn24;","Jn25;") 
F=array(chr(-23116),chr(-23124),chr(-23122),chr(-23120),_ 
chr(-23118),chr(-23114),chr(-23112),chr(-23110),_ 
chr(-23099),chr(-23097),chr(-23095),chr(-23075),_ 
chr(-23079),chr(-23081),chr(-23085),chr(-23087),_ 
chr(-23052),chr(-23076),chr(-23078),chr(-23082),_ 
chr(-23084),chr(-23088),chr(-23102),chr(-23104),_ 
chr(-23106),chr(-23108)) 
Jencode=iStr 
for i=0 to 25 
Jencode=replace(Jencode,F(i),E(i)) 
next 
End Function 

解码: 
Function Juncode(byVal iStr) 
if isnull(iStr) or isEmpty(iStr) then 
Juncode="" 
Exit function 
end if 
dim F,i,E 
’ F=array("ゴ","ガ","ギ","グ","ゲ","ザ","ジ","ズ","ヅ","デ",_ 
’ "ド","ポ","ベ","プ","ビ","パ","ヴ","ボ","ペ","ブ","ピ","バ",_ 
’ "ヂ","ダ","ゾ","ゼ") 
E=array("Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;","Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;","Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;","Jn21;","Jn22;","Jn23;","Jn24;","Jn25;") 
F=array(chr(-23116),chr(-23124),chr(-23122),chr(-23120),_ 
chr(-23118),chr(-23114),chr(-23112),chr(-23110),_ 
chr(-23099),chr(-23097),chr(-23095),chr(-23075),_ 
chr(-23079),chr(-23081),chr(-23085),chr(-23087),_ 
chr(-23052),chr(-23076),chr(-23078),chr(-23082),_ 
chr(-23084),chr(-23088),chr(-23102),chr(-23104),_ 
chr(-23106),chr(-23108)) 
Juncode=iStr 
for i=0 to 25 
Juncode=replace(Juncode,E(i),F(i))’□ 
next 
End Function 

3、处理SQL语句: 
不要使用like语句,举个例子: 

会出问题的SQL:  where title like ’%"&keyword&"%’ 

现在换成下面的就不会出现内存溢出了:where InStr(1,LCase(Title),LCase(’"&keyword&"’),0)<>0 

问题应该可以解决。
Asp热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2024 电脑爱好者 版权所有 备案号:鲁ICP备09059398号