Welcome to Delicate template
Header
Just another WordPress site
Header

asp+access存储过程使用模糊查询问题

7月 10th, 2010 | Posted by 无 名 in asp | 数据库

今天,用access的存储过程(也谈不上是存储过程,只是access的查询设计器)实现模糊查询。
access的查询语句如下:

SELECT *
FROM company
WHERE company Like '*' & [p_company] & '*'
ORDER BY beian.id DESC;

以上是getdata存储过程。

asp使用存储过程语句如下:

	set cmd = server.CreateObject("ADODB.Command")
	with cmd
	.ActiveConnection = conn
	.CommandType = &H0004
	.CommandText = "getdata"
	end with
	Dim resultRS, resultArray
	Set resultRS = cmd.Execute(,request("keyword"))
	If Not resultRS.EOF Then
		resultArray = resultRS.GetRows()
	End If
	Set resultRS = Nothing
	Set cmd = Nothing
	conn.Close
	Set conn = Nothing

现在问题出来了,resultRS里面获取不到任何数据,也就是cmd.Execute没有返回数据集,但是在access数据库里面输入变量名,却能获取到数据,如果你讲模糊查询改为精确查询,却能正常获取数据,这使我很郁闷,难道不能使用模糊查询?
在网上找了很多资料,都无果,自己反复修改代码都找不到原因,但是一次无意的修改,却能获取到了数据,那就是在打开数据库连接的语句。
在conn.asp里面是这样的。

<%
dim conn
dim connstr
dim db
db="db/#beian.mdb"
Set conn = Server.CreateObject("adodb.connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
'如果你的服务器采用较老版本Access驱动,请用下面连接方法
'connstr="driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath(db)
conn.Open connstr
%>

原因在于connstr这个打开数据库连接语句,
如果使用connstr=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” & Server.MapPath(db)这个语句,模糊查询就获取不到数据。
如果改为下面的那个数据库连接语句,就能查询到数据,原理,我不懂,只知道问题出在这儿。如果大家知道其中的原理,请帖出来,一起了解。

You can follow any responses to this entry through the RSS 2.0 Both comments and pings are currently closed.