行业分类
一个关于access莫名其妙的问题
日期:2008-10-06 18:05  点击:611

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

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

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

日前遇到一�有PAccess的奇怪�}在@e和各位��一下,
在AccessY料�中若某�位的Y料含有某�日文字r就o法使用 like l件而a生“Out of memory“的�r
也就是�您有一PY料含有�字元ro�l件是否符合都��致e`l生, 我��提供一��例Ky�下面的例子:
1. select * from test (不使用l件的情r下正常)
2. select * from test where a like '%1%' (�a生e`“Out of memory“)
3. dataset + datatable.select (l件同第二c但分�次�理)
不�得@是不是 Jet 的bug? 我y�ADO OLEDB, ADO.NET OLEDB/ODBC, 三N方式例子2同�都o法成功
相同Y料�容c搜�l件在SQLServer/MySQLt不�出F�}.
我目前的解Q方法是�行DataSetK配合DataTable 的Select方法取代 wherel件,
@Nm然�出o`但效能相形之下s�的^差, 不^@是我目前想到的唯一k法,
各位若�此�}有d趣的�可以下d�行�例http://www.tiantian.cn/dotnet/test.zip(含source)
若您有更好的做法或解Q方式g迎�信��...

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

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

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

测试,通过!但是同样建议大型的数据应用还是用sql server,不仅速度快,这样的稀奇古怪的问题也就不会出现了。
关于网站  |  普通版  |  触屏版  |  网页版
首页 刷新 顶部