我检查到Recordset的RecordCount属性值为-1,但我能从Recordset中取出SQL执行后返回的数来.这是什么原因呢?

gz_xjf 2001-07-13 09:14:01
我测试的语句如下:
Set MyConn3=Server.CreateObject ("ADODB.Connection")
ls_driver = "{Microsoft ODBC for Oracle}"
ls_server = "people"
ls_uid="administrator"
ls_pwd="manager"
MyConn3.ConnectionString = "driver="&ls_driver&";server="&ls_server&";uid="&ls_uid&";pwd="&ls_pwd
MyConn3.Open
SqlString = "select * from p_base"
Set Rs4=Server.CreateObject ("ADODB.Recordset")
'Set Rs4=MyConn3.Execute(SqlString)
Rs4.Open SqlString,MyConn3
Response.Write Rs4("people_name")
Response.Write Rs4.RecordCount
Set Rs4=Nothing

我刚才又测了一下,我把配置的ODBC系统数据源删除后,还能连上数据库,RecordCount 也还是返回-1,就此问题请教一下各位,多谢了!
...全文
263 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
gz_xjf 2001-07-13
  • 打赏
  • 举报
回复
多谢你,你所说的处理方法我导向学习一下,虽然我目前不准备这样处理。
在此感谢各位,结账了!
Tyro 2001-07-13
  • 打赏
  • 举报
回复
我觉得是我们处理问题的方式不同,我从来不在asp中使用数据库连接,对数据库的操作都是在com组件中进行的,如果读取记录的话就用一个方法返回数组或xml,总之表现层没有对数据库的操作
gz_xjf 2001-07-13
  • 打赏
  • 举报
回复
我说的不是这个意思,我的意思是该连接如MyConn 在此Com中将以什么形式存在,如把它封装在
一个方法中,那么在ASP中调用了此方法后,将怎样引用此连接呢?
Tyro 2001-07-13
  • 打赏
  • 举报
回复
用vb编写activex dll就可以了

在asp中用Server.CreateObject
gz_xjf 2001-07-13
  • 打赏
  • 举报
回复
是不是把数据连接封装到一个服务器端的Com中,这种做法我只在Delphi程序中用过,但不知Com
怎么把数据连接封装起来让Asp用,以什么形式封装呢?
Tyro 2001-07-13
  • 打赏
  • 举报
回复
To:gz_xjf(thinker)
你把连接数据库的方法做到Com组件中并不需要在每个asp中copy代码呀,到时调用组件里的方法就可以了
gz_xjf 2001-07-13
  • 打赏
  • 举报
回复
我也隐约觉得这样连接有弊端,可我是在不想在每一个ASP中都Copy这样一段代码啊
Tyro 2001-07-13
  • 打赏
  • 举报
回复
连接数据库的操作应该在com组件里完成,也就是使用三层结构,你这样打开数据库的方式并不好
wybm 2001-07-13
  • 打赏
  • 举报
回复
这中情况是你没用更丰富的游标来打开数据库.如果你要显示的数据是只读的,
那么游标用1就可以.把Rs4.Open SqlString,MyConn3该为:Rs4.Open SqlString,MyConn3,1,1
再试试.
gz_xjf 2001-07-13
  • 打赏
  • 举报
回复
多谢三位,另外请教一下各位:我想把连接数据库的语句封装成一个Sub,如:
Sub ConnectionDB()
Set MyConn3=Server.CreateObject ("ADODB.Connection")
ls_driver = "{Microsoft ODBC for Oracle}"
ls_server = "people"
ls_uid="administrator"
ls_pwd="manager"
MyConn3.ConnectionString "driver="&ls_driver&";server="&ls_server&";uid="&ls_uid&";pwd="&ls_pwd
MyConn3.Open
End Sub

再在需要连接数据库的
ASP中调用此inc文件中的Sub来连接数据库,请问这样是不是会导致在调用ASP中不能彻底关闭连接,因为在过程外调用的MyConn3.Close中的MyConn3和Sub中的MyConn3不是一回事,而是形参
和实参的关系。 请问如果这样做了会有什么后果吗?难道非得在每一个需要连接数据库的ASP中
都要连接一次吗?你们平时是怎样处理的呢?


Tyro 2001-07-13
  • 打赏
  • 举报
回复
rs.open 默认的游标类型为adOpenForwardOnly,不支持recordcount,如果要得到recordcount,需要设置游标类型为adOpenDynamic或adOpenStatic
BrentIvan 2001-07-13
  • 打赏
  • 举报
回复
Rs4.Open SqlString,MyConn3

-->

Rs4.Open SqlString,MyConn3, 3, 3
tripofdream 2001-07-13
  • 打赏
  • 举报
回复
Rs4.Open SqlString,MyConn3,3,2
wangjiong 2001-07-13
  • 打赏
  • 举报
回复
Add:
Rs4.CursorLocation = adUseClient
Before:
Rs4.Open SqlString,MyConn3

28,391

社区成员

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

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