主题:  连接数据库那种方法对急

chinaxjd

职务:普通成员
等级:1
金币:1.0
发贴:166
#12002/12/10 15:38:55
我在网上看见人家连ODBC连数据库,但老是两种结果,那种对呀,为什么,请大家详细说一下,谢了,这也是一些新手常见到的,谢了


Set Conn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
sql = "SELECT * FROM message order by ID DESC"
'查询所有帖子,并按帖子的ID倒序排列
Conn.Open "bbs"
RS.open sql,Conn,1,1


Set Conn = Server.CreateObject("ADODB.Connection")
conn.open "filedsn=accessdatabase.dsn"
sql="select * from"
set rscustomerslist=conn.execute(sql)



chinaxjd

职务:普通成员
等级:1
金币:1.0
发贴:166
#22002/12/11 9:38:19
不会吧没有人知道,这里的高手那里去了,真让我失忘,我这里很急,但。。。。



FlowJZH

职务:普通成员
等级:1
金币:0.0
发贴:22
#32002/12/11 15:36:01
这两种方法各有优缺点

前者显示建立了conn对象和rs对象,这需要消耗比后者多的时间,因为后者的rs对象是conn.execute后隐式建立的

而后者的缺点在于,隐式生成的rs对象只能是adOpenForwardOnly(0)和adLockReadOnly (1)的,也就是说,无法向前移动记录集并且也不能更新记录集。这样的好处是比较省资源,但是如果需要修改记录集的话就不得不再执行一次sql语句的update命令,这样很不划算。

不过,如果你仅仅是需要把记录读出并且显示在屏幕上,那么后者应该会更好一些,因为前者的游标状态你设成了1,也就是adOpenKeyset,这个状态的事务级别很好具体的我记不清楚了不过应该是可以实现诸如“别的用户修改了某个值以后你可以马上在你的记录集里看到这个更新”之类的功能,所以相对耗费的资源也比较大。

其实还有一种方法
Set rscustomerslist = Server.CreateObject("ADODB.RecordSet")
rscustomerslist.open "select * from","filedsn=accessdatabase.dsn"    '这里还可以跟上游标状态的参数,默认的和第二种方法一样

这种方法对于单次的连接应该说是最省的,但是其缺点是无法利用connection和数据库之间的连接池来加速程序的执行,因为这个需要用conn对象显示地建立连接。

如果还有什么不清楚的,可以查看一下
msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/dasdkadooverview.asp?frame=true



kenyfun

职务:普通成员
等级:1
金币:0.0
发贴:18
#42002/12/16 15:43:13