主题:  asp两种连接数据库的问题?

liangzn28

职务:普通成员
等级:1
金币:0.0
发贴:60
#12005/11/3 8:37:37
大虾们,帮忙看看下面这段代码
我的第一种连接语句
<%
Dim db
    set db = server.CreateObject("adodb.connection"
    db.Open "dbq="&server.MapPath("data/xnyl.mdb"&";driver={Microsoft Access driver

(*.mdb)}"
%>
我的第二种连接语句
<%
dim conn,connstr,db
Set db = Server.CreateObject("ADODB.Connection"
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/xnyl.mdb"
db.Open connstr
%>

显示信息UserID=1的记录:

<%
Dim rs,strSql
strSql="select * From user where UserID=1"
Set rs=db.Execute(strSql)
response.Write(rs("UserName")
%>

当我用第一种连接语句的时候,能正常用response.write输出
但是当我用第二种连接语句的时候却有错误如下:
Microsoft JET Database Engine (0x80040E14)
FROM 子句语法错误。
/one/index.asp, 第 22 行

请问这是什么原因呢!是不是我用的第二种OLEDB连接错了,还是怎样?
无论是大虾还是小虾,只要是会的都可以说说,不会的也帮忙顶顶,呵呵!先谢啦!



liangzn28

职务:普通成员
等级:1
金币:0.0
发贴:60
#22005/11/3 8:41:33
<%
Dim db
    set db = server.CreateObject("adodb.connection")
    db.Open "dbq="&server.MapPath("data/xnyl.mdb")&";driver={Microsoft Access driver

(*.mdb)}"
%>
我的第二种连接语句
<%
dim conn,connstr,db
Set db = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/xnyl.mdb")
db.Open connstr
%>

显示信息UserID=1的记录:

<%
Dim rs,strSql
strSql="select * From user where UserID=1"
Set rs=db.Execute(strSql)
response.Write(rs("UserName"))
%>

当我用第一种连接语句的时候,能正常用response.write输出
但是当我用第二种连接语句的时候却有错误如下:
Microsoft JET Database Engine (0x80040E14)
FROM 子句语法错误。
/one/index.asp, 第 22 行

请问这是什么原因呢!是不是我用的第二种OLEDB连接错了,还是怎样?
无论是大虾还是小虾,只要是会的都可以说说,不会的也帮忙顶顶,呵呵!先谢啦!



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#32005/11/3 8:54:52
select * From [user]



liangzn28

职务:普通成员
等级:1
金币:0.0
发贴:60
#42005/11/3 13:01:30
allinhands,你说的我已经试过,但是还是同样的问题.
错误类型:
Microsoft JET Database Engine (0x80040E14)
FROM 子句语法错误。
/one/index.asp, 第 22 行



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#52005/11/3 13:47:45
连接Access数据库?我这里有写好的两个函数,你参照一下,也许能找到问题的所在呀。
	'打开Access数据库
	Function OpenAccess(MDBFileName,PIN)
		Dim StrConn
		StrConn="Provider=Microsoft.Jet.OLEDB.4.0"
		StrConn=StrConn & ";Persist Security Info=False"
		StrConn=StrConn & ";Jet OLEDB:Database Password=" & PIN
		StrConn=StrConn & ";Data Source=" & Server.MapPath(MDBFileName)
		Set OpenAccess=Server.CreateObject("ADODB.Connection")
		OpenAccess.Open strConn
	End Function
	'打开Access数据库二
	Function OpenAccessB(MDBFileName,PIN)
		Dim StrConn
		StrConn="Driver={Microsoft Access Driver (*.mdb)}"
		StrConn=StrConn & ";DBQ=" & Server.MapPath(MDBFileName)
		StrConn=StrConn & ";PWD=" & PIN
		Set OpenAccessB=Server.CreateObject("ADODB.Connection")
		OpenAccessB.Open strConn
	End Function
	'关闭Access数据库
	Sub CloseAccess(ConnAccess)
		ConnAccess.Close
		Set ConnAccess=Nothing
	End Sub



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#62005/11/3 13:51:59
好像是少了Jet OLEDB:
说明一下,PIN指的是Access数据库的密码,如果没有密码,设为空就可以了。



liangzn28

职务:普通成员
等级:1
金币:0.0
发贴:60
#72005/11/3 15:26:57
呵呵,上面的东西好像长了点吧!我想问问用OLEDB跟非OLEDB连接有什么区别啊?



liangzn28

职务:普通成员
等级:1
金币:0.0
发贴:60
#82005/11/3 15:30:35
我发现错误的地方了,原来是数据库表的名字

"user"有问题,我将它改成"user_info" 或其他的

就可以了,可是我不知道为什么用第二种连接方法就不能用表名"user"

这应该是OLEDB跟OLEDB之间的区别是吗?



liangzn28

职务:普通成员
等级:1
金币:0.0
发贴:60
#92005/11/3 15:39:52
再想请教diffmaker多一个业余的问题,你回复的帖子代码段是不是加在[html][/html]之间的啊?



liminghyx520

职务:普通成员
等级:1
金币:0.0
发贴:1
#102005/11/3 16:37:07
因为user是关键字,所以要加[]



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#112005/11/3 21:33:24
是加在[code][/code]之间的。
其实代码长短有关系吗?关键是好使就成了。这是两个通用的函数,整理好了,方便复用呀。打开ACCESS数据库,用一种方法就可以了。我是把加密与不加密的放在一个函数里了。



liangzn28

职务:普通成员
等级:1
金币:0.0
发贴:60
#122005/11/4 8:53:56
好,值得收场,呵呵!谢谢啦!试下也好.我想问问到底有哪些关键字啊?



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#132005/11/4 9:23:40
关键字很多,自己养成命名习惯就可以了。我一般用组合式方法来给表及字段命名。比如我想建立一个朋友信息的表,命名叫:amigoInfo,内设字段amigoID,amigoName,amigoSex,amigoAge,amigoAddress,这样命名,自己一看就知道其用途了。使用时也不易出错。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#142005/11/4 9:26:18
可能名字比较长,需要多敲几下键盘。但出错了几率也小了,即使出错也好排查。重要的是,对程序的后期维护比较有帮助。我觉得长点还是值得的。