1
<%
2
Class dbClass
3
'-------------------------------------------------------------------------
4
'变量说明
5
'conn-----------connection对象
6
'strsql---------执行查询的语句
7
'vTbName--------查询分页的表名
8
'vPKey----------查询分页的表的主键
9
'vPgFields------查询分页要显示的字段
10
'vPgSize--------查询分页每页显示的记录数
11
'vCurrPg--------查询分页显示的当前页
12
'vConditions----查询分页的条件
13
'vOrderBy-------查询分页的排序
14
'-------------------------------------------------------------------------
15
private conn,strsql,vTbName,vPKey,vPgFields,vPgSize,vCurrPg,vConditions,vOrderBy
16
'类的初始化
17
private Sub Class_Initialize()
18
'当是MS Sql数据库时设置以下两个变量
19
'dim dbServer '数据库服务器的名称或ip地址
20
'dim dbname '数据库的名字
21
dim dbPath '若是Access数据库,此处设置其路径
22
dim dbUser '数据库的登录用户名
23
dim dbPass '数据库的登录密码
24
dim connstr
25
dbPath = "/testasp/data/data.mdb" '设置数据库路径
26
dbUser = "admin"
27
dbPass = "123456"
28
'若是access,并且有密码
29
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbPath) &_
30
";User ID=" & dbUser & ";Password=;Jet OLEDB:Database Password=" & dbPass
31
'若是access,并且没有密码
32
'connstr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(dbPath)
33
'若是ms-sql数据库
34
'connstr = "Provider = Sqloledb; User ID = " & dbUser & "; Password = " & dbPass &_
35
' "; Initial Catalog = " & dbname & "; Data Source = " & dbServer
36
on error resume next
37
set conn=server.CreateObject("adodb.connection")
38
conn.open connstr
39
errMsg "连接数据库"
40
End Sub
41
'类结束
42
Private Sub Class_terminate()
43
conn.close
44
set conn=nothing
45
End Sub
46
'-------------------------------------------------------------------------
47
'给类的变量设置值
48
'-------------------------------------------------------------------------
49
'设置sql语句
50
Public Property Let sqlStr(Byval Values)
51
strsql=Values
52
End Property
53
'设置查询分页的表名
54
public property let tbName(Byval Values)
55
vTbName=Values
56
end property
57
'--------------------------------------------------------
58
'设置查询分页的表的主键
59
public property let pKey(ByVal Values)
60
vPKey=Values
61
end property
62
'--------------------------------------------------------
63
'设置显示的字段
64
public property let pgFields(ByVal Values)
65
vPgFields=Values
66
end property
67
'--------------------------------------------------------
68
'设置每页显示的记录数
69
public property let pgSize(ByVal Values)
70
vPgSize=Values
71
end property
72
'---------------------------------------------------------
73
'设置当前显示的页数
74
public property let currPg(ByVal Values)
75
vCurrPg=Values
76
end property
77
'--------------------------------------------------------
78
'设置查询的条件
79
public property let conditions(ByVal Values)
80
if Len(Values)>0 then
81
vConditions=" where "&Values
82
else
83
vConditions=" where 1=1 "
84
end if
85
end property
86
'-------------------------------------------------------
87
'设置查询的排序
88
public property let orderBy(ByVal Values)
89
if Len(Values)>0 then
90
vOrderBy=" order by "&Values
91
else
92
vOrderBy=Values
93
end if
94
end property
95
'-------------------------------------------------------------
96
'得到记录总数
97
public property get vRsCount()
98
if vCurrPg=1 then
99
sqlc="select count("&vPKey&") as Idcount from "&vTbName&" "&vConditions
100
set rsc=server.CreateObject("adodb.recordset")
101
rsc.open sqlc,conn,0,1
102
RsNum=rsc("IdCount")
103
rsc.close
104
set rsc=nothing
105
if RsNum>0 then
106
response.Cookies("iRecord")=RsNum
107
vRsCount=RsNum
108
else
109
vRsCount=0
110
end if
111
else
112
vRsCount=request.Cookies("iRecord")
113
end if
114
end property
115
'得到总页数
116
public property get vPgCount()
117
iRsCount2=vRsCount()
118
if iRsCount2 mod vPgSize =0 then
119
vPgCount=int(iRsCount2/vPgSize)
120
else
121
vPgCount=int(iRsCount2/vPgSize)+1
122
end if
123
end property
124
'查询数据库
125
Public Function rsDB()
126
on error resume next
127
'简单的查询出结果
128
' set rsDB = Server.CreateObject("ADODB.RecordSet")
129
' rsDB.Open strsql,conn,1,3
130
Set rsDB=conn.Execute(strsql)
131
errMsg "查询数据库"
132
End Function
133
'添加,更新,删除数据库记录
134
public Function upDB()
135
on error resume next
136
conn.execute(strsql)
137
errMsg "编辑数据库记录"
138
end Function
139
'-------------------------------------------------------------------------
140
'用来实现分页的记录集函数
141
public function pageRs()
142
on error resume next
143
dim startRs
144
startRs=(vCurrPg-1)*vPgSize
145
'-------------------------------------------------------------------------------------------
146
'使用此语句的话要根据参数修改代码,具体的是若排序为asc则<改为>,min改为max
147
' if startRs=0 then
148
' strsql="select top "&vPgSize&" "&vPgFields&" from "&vTbName&" "&vConditions&" "&vOrderBy
149
' else
150
' strsql="select top "&vPgSize&" "&vPgFields&" from "&vTbName&" "&vConditions&" and "&vPKey&" < "
151
' strsql=strsql&"(select min("&vPKey&") from (select top "&startRs&" "&vPKey&" from "
152
' strsql=strsql&vTbName&" "&vConditions&" "&vOrderBy&") as idTable) "&vOrderBy
153
' end if
154
'---------------------------------------------------------------
155
if startRs=0 then
156
strsql="select top "&vPgSize&" "&vPgFields&" from "&vTbName&" "&vConditions&" "&vOrderBy
157
else
158
strsql="select top "&vPgSize&" "&vPgFields&" from "&vTbName&" "&vConditions&" and "&vPKey&" not "
159
strsql=strsql&"in (select top "&startRs&" "&vPKey&" from "&vTbName&" "&vConditions&" "&vOrderBy
160
strsql=strsql&") "&vOrderBy
161
end if
162
'-------------------------------------------------------------------
163
set pageRs=server.CreateObject("adodb.recordset")
164
pageRs.open strsql,conn,0,1
165
errMsg "记录分页"
166
end function
167
'------sql用存储过程分页------------------------------------------------------
168
public function sqlPage()
169
on error resume next
170
Set sqlPage=server.CreateObject("Adodb.RecordSet")
171
Set Cm=Server.CreateObject("Adodb.Command")
172
Cm.CommandType = 4
173
Cm.ActiveConnection = conn
174
Cm.CommandText="sp_Util_Page"
175
Cm.parameters(1) = vPgFields
176
Cm.parameters(2) = vTbName
177
Cm.parameters(3) = vConditions
178
Cm.parameters(4) = vOrderBy
179
Cm.parameters(5) = vPKey
180
Cm.parameters(6) = vCurrPg
181
Cm.parameters(7) = vPgSize
182
Cm.parameters(8) = vRsCount()
183
Cm.parameters(9) = ""
184
sqlPage.CursorLocation = 3
185
sqlPage.LockType = 1
186
sqlPage.Open Cm
187
errMsg "记录分页"
188
end function
189
'----------------------------------------------------------------------------
190
'关闭记录集objRs
191
'----------------------------------------------------------------------------
192
Public Function cRs(ByVal ObjRs)
193
ObjRs.close()
194
Set ObjRs = Nothing
195
End Function
196
'----------------------分页的页码导航---------------------------------------
197
public function pageNav()
198
iRsCount=vRsCount()'总记录数
199
mypage=vCurrPg'当前页数
200
PgCount=vPgCount()'总页数
201
prePage=mypage-1
202
if prePage<1 then
203
prePage=1
204
end if
205
nextPage=mypage+1
206
if nextPage>PgCount then
207
nextPage=PgCount
208
end if
209
pagestr="<div >>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
我的想法是既然是数据库操作类,所以类一实例化的时候就建立数据库连接,所以在使用的时候要先修改 Class_Initialize()中的代码,设置正确的数据库连接数据,设置好了就可以使用了。
1、一般的操作
set myDb=new dbClass
myDb.sqlStr="select * from ..." '这里设置数据库操作语句
set rs=myDb.rsDB()
'这里返回rs,接着就按平时的写法写表现数据的代码
'.......
myDb.cRs(rs) '关闭释放rs
set myDb=nothing
myDb.sqlStr="select * from ..." '这里设置数据库操作语句
set rs=myDb.rsDB()
'这里返回rs,接着就按平时的写法写表现数据的代码
'.......
myDb.cRs(rs) '关闭释放rs
set myDb=nothing
若myDb.sqlStr设置的是更新、删除或添加的sql语句,那么就要用myDb.upDB()来执行,即
set myDb=new dbClass
myDb.sqlStr="update ..."
myDb.upDB()
set myDb=nothing
myDb.sqlStr="update ..."
myDb.upDB()
set myDb=nothing