ASP操作ADO数据库的问题

pursue 2000-07-22 10:52:00
'我用以下方法打开数据库:data.mdb
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("data.mdb")
Set rs=conn.Execute("SELECT * FROM abc") 'abc是表名
问:
1、我用Set rs=conn.Execute("abc") 同样可以读出数据,不是说参数应为SQL语句吗?这是为何?是装了Access的原因吗?
2、我想得到表abc的记录数,该怎么做?
3、我的rs对象只能做MoveNext方法,而其他的方法都会报错(如下),为何?

Response.Write rs.Fields(0).Value
Response.Write rs.Fields(1).Value
rs.MoveNext
Response.Write rs.Fields(0).Value
Response.Write rs.Fields(1).Value
'以上正常,但执行下面的语句报错
rs.MoveLast '就是在这句报错
Response.Write rs.Fields(0).Value
Response.Write rs.Fields(1).Value
...全文
134 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
skt642 2001-05-31
  • 打赏
  • 举报
回复
54206关注!
UserReg 2000-07-22
  • 打赏
  • 举报
回复
'我用以下方法打开数据库:data.mdb
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("data.mdb")
Set rs=conn.Execute("SELECT * FROM abc") 'abc是表名
问:
1、我用Set rs=conn.Execute("abc") 同样可以读出数据,不是说参数应为SQL语句吗?这是为何?是装了Access的原因吗?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
可以用Connection.Execute("表名")直接打开一个表,
和Connection.Execute("SELECT * FROM 表名")效果一样,
和Access没有关系。


2、我想得到表abc的记录数,该怎么做?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CursorType用adOpenKeyset,adOpenStaticOpen方式打开RecordSet就可以得到
正确的RecordCount,其他方式得不到,返回都是-1。


3、我的rs对象只能做MoveNext方法,而其他的方法都会报错(如下),为何?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CursorType用adOpenForwardOnly方式打开的只能用MoveNext,MoveFirst方法
其他的向MovePrevious,MoveLast,Move等都不能用。
//Luck

Response.Write rs.Fields(0).Value
Response.Write rs.Fields(1).Value
rs.MoveNext
Response.Write rs.Fields(0).Value
Response.Write rs.Fields(1).Value
'以上正常,但执行下面的语句报错
rs.MoveLast '就是在这句报错
Response.Write rs.Fields(0).Value
Response.Write rs.Fields(1).Value
mjs2000 2000-07-22
  • 打赏
  • 举报
回复
好象第一个不成功我实验了一下
如下:
第一中方式;

Set rs =conn.Execute("abc")
while not rs.eof
Response.Write rs("user1") 'user1为字段名
wend
报告出错:
ADO could not find the object in the collection corresponding to the name or ordinal reference requested by the application
第二种方式:
Set rs =conn.Execute("abc")
if not Rs.eof then
Response.Write "成功的读取记录"
end if
此时没有出错并显示了“成功的读取记录”
我用的是Nt4.0 Access2000 调试的。
你在仔细的检查一下你的程序是不是真的读出了记录呢


你的第二个问题是你的游标类型没有设置
应该设置如下:
Rs.Cursortype=Adopenstatic
Rs.locktype=Adlockreadonly
Tyro 2000-07-22
  • 打赏
  • 举报
回复
比如rs.Open "abc", conn, 2 这里2是游标类型adOpenDynamic,也可以设置成adOpenKeyset或adOpenStatic

设置好游标类型后就可以用rs.RecordCount获得记录数
Tyro 2000-07-22
  • 打赏
  • 举报
回复
1、写"abc"就是"select * from abc"的意思呀!
2、3、打开记录集时默认的游标类型是adOpenForwardOnly,你应该在打开记录集时定义游标类型

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧