好了,下面奉上详细使用说明:
一.数据库连接
考虑到大多数人的使用习惯,在数据库连接上使用了公共过程,所以需要大家在代码里自行修改,如果你已经建立了数据库连接,把这几行注释掉就行了。代码中内置了MSSql,Access,MySQL,Oracle4种数据库的连接方式,当然你也可以自行在源代码中增加或删除。修改例如:
复制内容到剪贴板
代码:
Dim a : a = CreatConn(0, "TestData", "localhost", "username", "userpassword")
Dim b : b = CreatConn(1, "Data/%TestDb%.mdb", "", "", "")说明一下,第1个参数可以是字符串。如果是使用Access,则第2个参数输入相对路径和绝对路径都是可以的,如有密码也可以在第5个参数中输入,如:
复制内容到剪贴板
代码:
Dim c : c = CreatConn("ACCESS", "E:\MyWeb\Data\%TestDB%.mdb", "", "", "mdbpassword")相关函数:
原 型:CreatConn(dbType, strDB, strServer, strUid, strPwd)
功 能:建立数据库连接字符串
返回值:String
参 数:
dbType : Integer or String 连接数据库类型
(0 or "MSSQL") - Microsoft SQL Server
(1 or "ACCESS") - Microsoft Office Access
(2 or "MYSQL") - MySQL Server
(3 or "ORACLE") - Oracle Server
strDB : String 数据库名或数据库地址(Access使用绝对或者相对路径均可)
strServer : String 数据库服务器地址,Access请留空
strUid : String 数据库用户名,Access请留空
strPwd : String 数据库密码
原 型:Oc(connStr)
功 能:打开数据库连接
返回值:Object 数据库连接对象
参 数:
connStr : String 数据库连接字符串,由CreatConn函数生成
原 型:Co(obj)
功 能:关闭对象
参 数:
obj : Object 要关闭的对象名称
原 型:OpenConn
功 能:打开默认数据库连接,会自动建立一个名称为Conn的连接对象
参 数:无
原 型:CloseConn
功 能:关闭名称为Conn的默认数据库连接对象
参 数:无
二. 数据库操作
下面就是本数据库操作类的函数功能说明,应该算是手册了,请多看例子的应用。
原 型:dbCtrl.dbConn(objConn)
功 能:获取数据库连接对象
参 数:
objConn : Object 已经建立的数据库连接对象
举 例:
复制内容到剪贴板
代码:
Dim db : Set db = New DbCtrl
db.dbConn = Oc(CreatConn(1,"E:\WebSite\MySite\Data\%TestDb%.mdb","","",""))
Co(db)原 型:dbCtrl.AutoID(TableName)
功 能:自动获取唯一序列号(自动编号)
返回值:Integer
参 数:
TableName : String 需要获得唯一序列号的数据表名
举 例:
复制内容到剪贴板
代码:
Dim newId
newId = db.AutoId("TestTable")
Response.Write(newId)原 型:dbCtrl.GetRecord(TableName,FieldsList,Condition,OrderField,ShowN)
功 能:取得符合条件的纪录集
返回值:Object 纪录集对象
参 数:
TableName : String 表名称
FieldsList : String 字段名称,用逗号隔开,留空则为全部字段
Condition : String or Array 查询条件,如果是数组应遵循前面的参数约定
OrderField : String 排序方式
ShowN : Integer 获取纪录的数量,相当于sql中的 Select Top N
举 例:
复制内容到剪贴板
代码:
Dim rs
Set rs = db.GetRecord("TestTable","fId,fName,fAge","fSex='男' And IsActive = 1","fName Asc", 0)
While Not rs.eof
Response.Write ("Name is:" & rs(1) & " Age is:" & rs(2) & "<br />")
rs.movenext()
Wend
db.C(rs)对于以上的例子,用下面的数组方式指定条件是等价的:
复制内容到剪贴板
代码:
Set rs = db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:男","IsActive:1"), "fName Asc", 0)另外,你可以用下面的语句来查看这个函数生成的sql语句:
复制内容到剪贴板
代码:
Response.Write(db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:男","IsActive:1"), "fName Asc", 0))如你所见,只需要在原来的函数前加一个w即可。
原 型:dbCtrl.GetRecordBySQL(strSelect)
功 能:根据sql语句取得纪录集
返回值:Object 纪录集对象
参 数:
strSelect : String 用于生成记录集的SQL语句
举 例:
复制内容到剪贴板
代码:
Dim rs
Set rs = db.GetRecordBySQL("Select a.Id, a.LastName, b.Group From User a InnerJoin Depart b On a.GroupId = b.GroupId")
'Your Code Here ...
db.C(rs)原 型:dbCtrl.GetRecordDetail(TableName, Condition)
功 能:根据某一条指定纪录的详细数据
返回值:Object 纪录集对象
参 数:
TableName : String 表名称
Condition : String or Array 查询条件,如果是数组应遵循前面的参数约定
举 例:
复制内容到剪贴板
代码:
Dim rs, Id
Id = Request.QueryString("id")
Set rs = db.GetRecordDetail("TestTable","Id=" & id)
'Your Code here...
db.C(rs)说 明:就像你已经看出来的一样,这个最常用在打开某个详细页面(比如新闻内容页面)
原 型:dbCtrl.AddRecord(TableName, ValueList)
功 能:添加一个新的纪录
返回值:新记录的Id号(成功) or 0 (失败)
参 数:
TableName : String 表名称
ValueList : Array 插入表的字段和值,只能是数组且应遵循前面的参数约定
举 例:
复制内容到剪贴板
代码:
Dim fName, fSex, fWorkYear, fBirth
fName = "王二坛"
fSex = "男"
fWorkYear = 12
fBirth = Cdate("1981-10-23")
Dim result
result = db.AddRecord("TestTable",Array("Name:"&fName, "Sex:"&fSex, "WorkYear:"&fWorkYear, "Birthday:"&fBirth, "IsActive:True"))
If result<>0 Then
Response.Write("添加记录成功!此记录的自动编号Id为" & result)
End If看见了吧,真的不用考虑字段的类型是什么滴。
如果你想要代码中的字段和值看得更清楚一点,也可以这样写,但凭卿之所好:
复制内容到剪贴板
代码:
result = db.AddRecord("TestTable",Array("Name:" & fName,_
"Sex:" & fSex,_
"WorkYear:" & fWorkYear,_
"Birthday:" & fBirth,_
"IsActive:True"))另外,你可以用下面的语句来查看这个函数生成的sql语句:
复制内容到剪贴板
代码:
Response.Write(db.wAddRecord("TestTable",Array("Name:"&fName, "Sex:"&fSex, "WorkYear:"&fWorkYear, "Birthday:"&fBirth, "IsActive:True")))说 明:返回的Id值用的是比较笨的方法,并不能保证在并发数据量大的时候的准确性,慎用。
原 型:dbCtrl.UpdateRecord(TableName, Condition, ValueList)
功 能:根据指定条件更新纪录
返回值:1 (成功) or 0 (失败)
参 数:
TableName : String 表名称
Condition : String or Array 更新条件,如果是数组应遵循前面的参数约定
ValueList : String or Array 更新的字段及值,如果是数组应遵循前面的参数约定
举 例:
复制内容到剪贴板
代码:
Dim fName, fWorkYear
fName = "王三坛"
fWorkYear = 10
Dim result
result = db.UpdateRecord("TestTable", "UId = 1308", Array("Name:"&fName, "WorkYear:"&fWorkYear))
If result<>0 Then
Response.Write("更新数据成功!")
End If另外,你可以用下面的语句来查看这个函数生成的sql语句:
复制内容到剪贴板
代码:
Response.Write(db.wUpdateRecord("TestTable", "UId = 1308", Array("Name:"&fName, "WorkYear:"&fWorkYear)))原 型:dbCtrl.DeleteRecord(TableName,IDFieldName,IDValues)
功 能:删除符合条件的纪录
返回值:1 (成功) or 0 (失败)
参 数:
TableName : String 表名称
IDFieldName : String 表的Id字段的名称
IDValues : String or Array 删除条件,可以是由逗号隔开的多个Id号,如果是数组应遵循前面的参数约定
举 例:
复制内容到剪贴板
代码:
Dim ids, result
ids = Request.Form("selectid") '可以假设这里获取的值是 12, 34, 256, 314 (复选框提交的值都这样)
result = db.DeleteRecord("TestTable", "UId", ids)
If result<>0 Then
Response.Write("删除数据成功!")
End If当然,你也可以用字符串或者数组指定其它的条件,比如:
复制内容到剪贴板
代码:
result = db.DeleteRecord("TestTable", "UId", "IsActive = 0 And FirstName = 'Tom'")另外,你可以用下面的语句来查看这个函数生成的sql语句:
复制内容到剪贴板
代码:
Response.Write(db.wDeleteRecord("TestTable", "UId", ids))原 型:dbCtrl.ReadTable(TableName, Condition, GetFieldNames)
功 能:根据指定条件获取某条纪录中的其他字段的内容
返回值:String (GetFieldNames为单个字段) or Array (GetFieldNames为多个字段)
参 数:
TableName : String 表名称
Condition : String or Array 查询条件,如果是数组应遵循前面的参数约定
GetFieldNames : String 单个字段名或者由逗号隔开的多个字段名
举 例:
复制内容到剪贴板
代码:
Dim uid, result
uid = rs("postid") '假设这里是页面上某个记录集中的用户id值
result = db.ReadTable("UserTable","UId=" & uid, "UserName")
Response.Write("发布者:" & result)我不得不说,在实际应用中,这个函数可能是用得最多的,你上面看到的就是一个非常常用的例子,从一个值去获取另外一个表中某字段值等于该值的另外一个字段的值(有点拗口,不过确实就是这个意思)。下面的例子将告诉你如何根据这个值获得多个相应的值。
复制内容到剪贴板
代码:
Dim uid, result
uid = rs("postid") '假设这里是页面上某个记录集中的用户id值
result = db.ReadTable("UserTable","UId=" & uid, "UserName,UserSex,UserAge")
Response.Write("发布者:" & result(0) & "<br /> 性别:" & result(1) & "<br /> 年龄:" &result(2))如你所见,就这么简单,输入多个字段名称得到的是一个数组。
原 型:dbCtrl.C(objRs)
功 能:关闭纪录集对象
参 数:
objRs : Object 页面上的某个记录集对象
举 例:
复制内容到剪贴板
代码:
Dim rs
Set rs = db.GetRecordDetail("TestTable","Id=123" )
'Your Code here...
db.C(rs)这个函数上面的许多例子都用了,就不多解释了。
[
本帖最后由 coldstone 于 2007-11-1 16:52 编辑 ]