论坛数据统计           欢迎到【弱电论坛】来学习和讨论问题!

弱电工程项目管理软件
★电工电气产品供求、电气展会、人才、电气技术文章、图库、电气技术论坛等相关内容,请跳转至【电气之家网】--- 可直接使用本站会员名和密码登陆!(首次使用需要激活账户)
标王 热搜: 网络监控  弱电  楼宇对讲  机房及机柜内部的理线方法  门禁  CAD  ar800-hn  综合布线  工资  面板 
 
 
当前位置: 首页 » 技术 » 电脑技术 » 数 据 库 » 正文

一个关于access莫名其妙的问题

放大字体  缩小字体 发布日期:2008-10-06  来源:互联网  作者:manage  浏览次数:597
核心提示:深夜,朋友电话求助:网站的搜索出问题了! 朋友做了一个大型的音乐下载网站,很红火,其网站的核心代码是我写的,谁都知道asp的代码一般很稳定,如果不改动或者更换环境是不会出现什么问题的。可是这次的问题真的很怪,音乐按“标题”无法查询,但是按“歌星”,按“拼
 
 

深夜,朋友电话求助:网站的搜索出问题了!

朋友做了一个大型的音乐下载网站,很红火,其网站的核心代码是我写的,谁都知道asp的代码一般很稳定,如果不改动或者更换环境是不会出现什么问题的。可是这次的问题真的很怪,音乐按“标题”无法查询,但是按“歌星”,按“拼音”之类的都是正常的。比较了代码:"select * from yinyue where title Like '%"& keyword &"%' order by articleid desc",实在看不出什么毛病。不使用like,直接用=倒是可以,看来是模糊查询出错了。但是为什么会这样呢?

早上醒来,第一件事就是到google上搜索,运气还算不错,很快的就看到一篇标题为《Jet SQL 的 bug? 》blog,描述如下:

日前遇到一個有關Access的奇怪問題在這裡和各位討論一下,
在Access資料庫中若某欄位的資料含有某個日文字時就無法使用 like 條件而產生“Out of memory“的狀況
也就是當您有一筆資料含有該字元時無論條件是否符合都會導致錯誤發生, 我簡單提供一個範例並測試下面的例子:
1. select * from test (不使用條件的情況下正常)
2. select * from test where a like '%1%' (會產生錯誤“Out of memory“)
3. dataset + datatable.select (條件同第二點但分兩次處理)
不曉得這是不是 Jet 的bug? 我測試ADO OLEDB, ADO.NET OLEDB/ODBC, 三種方式例子2同樣都無法成功
相同資料內容與搜尋條件在SQLServer/MySQL則不會出現問題.
我目前的解決方法是採行DataSet並配合DataTable 的Select方法取代 where條件,
這麼雖然輸出無誤但效能相形之下卻變的較差, 不過這是我目前想到的唯一辦法,
各位若對此問題有興趣的話可以下載執行範例http://www.tiantian.cn/dotnet/test.zip(含source)
若您有更好的做法或解決方式歡迎來信討論...

因为朋友无意中咕哝了一句,是不是今天加了一千多首的日文歌曲的问题?呵呵,果真是小日本引起的BUG!

接下来就可以简单解决问题了,将代码更改为:

sql="select * from tablename"
rs.filter = " column like '%"&word&"%'"

测试,通过!但是同样建议大型的数据应用还是用sql server,不仅速度快,这样的稀奇古怪的问题也就不会出现了。
 
 
 
[ 技术搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 关闭窗口 ]

 
0条 [查看全部]  相关评论

 
点击排行
 
 
 
弱电基础 | 常用软件 | 信息发布规则 | 积分规则 | VIP会员注册 | 广告投放 | 弱电培训 | 联系我们 | 版权声明 | 帮助中心 | 网站地图 | 排名推广 | 京ICP备11008917号-3 | RSS订阅
★本站手机app客户端已上线! 点击下载