主题:  请教一个连接文件的解释!

liangzn28

职务:普通成员
等级:1
金币:0.0
发贴:60
#12006/6/23 9:35:40
class DBAccess
Dim strDB,StrCn,cn
Private sub Class_Initialize
call ConnDB("",false)
end sub

public function ConnDB(dbName,bNewCn)
Dim tmpcn
if dbName="" then
dbName="/data/public.mdb"
if strDB<>dbName then
strDB=dbName
StrCn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("..") & strDb
end if
if not Isempty(tmpcn) then
if tmpcn.state>0 then
tmpcn.close()
end if
set tmpcn=nothing
end if
if bNewCn then
if not Isempty(ConnDB) then
if ConnDB.state>0 then
ConnDB.close()
end if
set ConnDB=nothing
end if
set ConnDB = new DBAccess
set ConnDB.cn = Server.CreateObject("Adobc.connection")
set tmpcn=ConnDB.cn
else
if not Isempty(ConnDB) then
if ConnDB.state>0 then
ConnDB.close()
end if
set ConnDB=nothing
end if
if not Isempty(cn) then
if cn.state>0 then
cn.close()
end if
set cn=nothing
end if
if Isempty(cn) then
set cn=server.CreateObject("Adodb.connection")
set tmpcn=cn
end if
end if
end if
if tmpcn.state=0 then
tmpcn.open strCn
end if
end function
end class

呵呵,上面的代码是一个数据库连接文件的,也就是供很多文件调用包含的,可能长了点.我看了好几天也不怎么明白这段代码,特别是state的用法和含义,请各位大哥指教指教好吗?

编辑历史:[此帖最近一次被 liangzn28 编辑过(编辑时间:2006-06-23 10:56:15)]


缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#22006/6/23 10:32:51
if then写在同一行,就不需要end if.否则then的内容另外起行
结构错误



liangzn28

职务:普通成员
等级:1
金币:0.0
发贴:60
#32006/6/23 10:58:38
呵呵,if 的问题也就解决,我也就编辑过帖子,麻烦再帮我看看!
(这个论坛的编辑起很不好用,如果直接粘贴过来就会有一些符号会变成表情的,设置了禁止表情转换,确变成了上面的格式,哎,真难搞!!!)



蓝飞科技

职务:普通成员
等级:1
金币:0.0
发贴:23
#42006/7/2 23:18:35
state属性表示连接的打开状态,为了锁定或者特殊需要,所以就那一些打开的连接先关闭、置空
f cn.state>0 then 'cn.state>0表示打开状态为true状态,其实这样写不规范
cn.close()
set cn-nothing
end if



三仙半

职务:普通成员
等级:1
金币:0.0
发贴:241
#52006/7/4 18:10:16
你的这个文件是别人封装好的连接数据库的类,你只要理解这样几个问题就行了:
1、如何与数据库连接:用的是ADO的connection对象,格式如下
dim conn '定义一个变量
set conn = server.CreateObject("ADODB.connection")
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("database/test.mdb") '把它与一个对象实例连接
conn.open '打开这个数据库
2、如何得到数据:用的是ADO的recordSet对象,格式如下
dim objRS,strSQL
set objRS = server.createObject("ADODB.recordSet")
    strSQL = "select * from tabName" '这里根据你的查询需要书写
    objRS.open strSQL,conn,1,3,1 'conn是你已经建立的一个数据库连接
'recorderSet对象的open方法的格式以及各个参数的意义如下:
'objRS.open [Source][,ActiveConnection][,CursorType][,LockType][,Option]
'Source-----一个字符串;可能是Command对象、SQL字符串或数据库中的表名。
'Option-----取值范围为1,2,4,8;分别指定系统对Source参数的理解,对应关系不详。
' ?1=SQL字符串;2=数据库中的表名;4=Command对象;
'ActiveConnection-----一个Connection对象。
'CursorType-----光标的移动方式:0=只能向前;1=自由移动,之前读取的recorderSet对象看不到本对象对数据的更新
' 但看不到对象对数据的增加和删除;2=自由移动,之前读取的recorderSet对象可以看到本对象对数据
' 的任何操作(Acesss数据库不支持);3=自由移动,但数据是被下载到客户端浏览,其他对象对数据
' 的任何操作本对象均看不到。
'LockType------多个客户对同一笔数据进行访问时的处理方式。0=只读方式;1=悲观锁定(开始编辑即锁定),其它对象
' 只能只读打开;2=乐观锁定(调用Updata时才锁定),可能数据不同步;3=批量乐观锁定(调用Updata时
' 才锁定),允许批量更新记录,数据不同步可能更严重。

3、关闭对象的方法:
objRS.close '关闭对象
set objRS = noThing '取消变量与对象的连接
conn.close '关闭对象
set conn = noThing '取消变量与对象的连接


闭起眼睛看人生

三仙半

职务:普通成员
等级:1
金币:0.0
发贴:241
#62006/7/4 18:15:23
关于ASP与不同类型数据库连接时的连接字符串:
access:"Provider=microsoft.jet.oledb.4.0;data source=your_database_path;user id=admin;password=pass;"
Oracle:"Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"
MS SQL Server:"Provider=SQLOLEDB;data source=machinename;initial catalog=dbname;userid=sa;password=pass;"
MS text: "Provider=microsof.jet.oledb.4.0;data source=your_path;Extended Properties'text;FMT=Delimited'"
示例:与ACCESS数据库连接
dim conn
set conn = server.createobject("adodb.connection")
conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath("../db/bbs.mdb")



闭起眼睛看人生