当前位置:首页 » 网站技术 » ASP

Microsoft JET Database Engine 错误 '80040e14'解决方法

...

今天调试ASP程序,遇到了一个问题,提示:Microsoft JET Database Engine 错误 '80040e14',我是在使用SQL语句插入数据的时候遇到的,数据库是ACCESS。

开始我把SQL语句Response.Write出来,没有发现问题。所以我到网站去搜索,但找到的都是什么日文平假名的问题,所以没办法,只有自己找出解决方法来了。

我把SQL语句放到ACCESS里面去执行,也提示错误,但就是不知道是什么错误,搞了很长时间,但没有结果。后来我考虑到会不会是单引号的问题,因为我是插入一篇文章,里面很有可能有单引号,而且单引号问题在ACCESS和SQL Server数据库中是很常见的问题。我仔细检查了一下,发现确实有单引号,我原以为用了 Server.HTMLEncode 应该可以解决单引号问题了,没想到不是,所以我在代码中用 Replace(内容,"'","''") 把单引号替换成两个单引号(这是较好的解决方法),最后解决了。

不过可能你遇到的问题用这个方法解决不了,所以我把日文平假名的方法摘录进来,不过我没试过,如下:

26个日文片假名导致Access搜索(80040e14/内存溢出)的解决办法

ゴ ガ ギ グ ゲ ザ ジ ズ ヅ デ ド ポ ベ プ ビ パ ヴ ボ ペ ブ ピ バ ヂ ダ ゾ ゼ

当字段内包含了这26个日文字符任意一个多个时,就会导致在执行SQL语句中包含了

[字段] like '%aaaaa%' 或 inStr(1,[字段],'aaaaa',1)>0

这样的查询时,毫无道理的出现了

"Microsoft JET Database Engine 错误 '80040e14' 内存溢出"的错误

其他Jet SQL函数命令未作测试,大概与字符搜索定位匹配相关的都可能出错

搜索相关资料得知被微软工程师证实是Access的bug,可能是语法关系都是微软的东东

在vbs中 执行inStr(1,日文平假名变量,"aaaaa",1)依然要出现错误

Microsoft VBScript 运行时错误 错误 '800a0005' 无效的过程调用或参数: 'instr'

没有搜索,因这几个字符出现Access的论坛网站搜索无法进行,何等痛苦

昨天一朋友大叫怪事,他的音乐数据库无法搜索了,只有30000条记录时是好的

毫无疑问,日文片假名是祸根,花几分钟把有包含上面的日文替换成"?"搜索顺利恢复

找来论坛程序用户群最大的动网dvBBS AC版本 7.0SP2 版测试,同样有这个日文发帖后 导致无法搜索并且运行时出错的问题

线上去搜索 '80040e14' 内存溢出" 的错误 多的是!

一个简单的方法是:

把如下的语句:

Sql = "select * From [tbname] Where Title like '%"&keyword&"%' Order By id Desc"

换成:

Sql = "select * from [tbname] where InStr(1,LCase(Title),LCase('"&keyword&"'),0)<>0 order by id desc"

继续阅读
ASP.NET进度条
没有数据时显示GridView表格
ASP.NET中的换行问题解决方案
ASP.NET跳转页面方法比较
ASP.NET内置功能抵御Web攻击
ASP.NET写文件实例
ASP禁用页面缓存的五种方法
ASP.NET页面间值传递方法实例
使用ASP.NET备份和还原SQL Server及Access数据库
发表评论

昵称:
最新评论
暂时没有评论!