1<%
2'==========================================================================
3'文件名称:clsDbCtrl.asp
4'功 能:数据库操作类
5'作 者:coldstone (coldstone[在]qq.com)
6'程序版本:v1.0.5
7'完成时间:2005.09.23
8'修改时间:2007.10.30
9'版权声明:可以在任意作品中使用本程序代码,但请保留此版权信息。
10' 如果你修改了程序中的代码并得到更好的应用,请发送一份给我,谢谢。
11'==========================================================================
12
13Dim a : a = CreatConn(0, "master", "localhost", "sa", "") 'MSSQL数据库
14'Dim a : a = CreatConn(1, "Data/%TestDB%.mdb", "", "", "") 'Access数据库
15'Dim a : a = CreatConn(1, "E:\MyWeb\Data\%TestDB%.mdb", "", "", "mdbpassword")
16Dim Conn
17'OpenConn() '在加载时就建立的默认连接对象Conn,默认使用数据库a
18Sub OpenConn : Set Conn = Oc(a) : End Sub
19Sub CloseConn : Co(Conn) : End Sub
20
21Function Oc(ByVal Connstr)
22On Error Resume Next
23Dim objConn
24Set objConn = Server.CreateObject("ADODB.Connection")
25objConn.Open Connstr
26If Err.number <> 0 Then
27 Response.Write("<div id=""DBError"">数据库服务器端连接错误,请与网站管理员联系。</div>")
28 'Response.Write("错误信息:" & Err.Description)
29 objConn.Close
30 Set objConn = Nothing
31 Response.End
32End If
33Set Oc = objConn
34End Function
35
36Sub Co(obj)
37On Error Resume Next
38Set obj = Nothing
39End Sub
40
41Function CreatConn(ByVal dbType, ByVal strDB, ByVal strServer, ByVal strUid, ByVal strPwd)
42Dim TempStr
43Select Case dbType
44 Case "0","MSSQL"
45 TempStr = "driver={sql server};server="&strServer&";uid="&strUid&";pwd="&strPwd&";database="&strDB
46 Case "1","ACCESS"
47 Dim tDb : If Instr(strDB,":")>0 Then : tDb = strDB : Else : tDb = Server.MapPath(strDB) : End If
48 TempStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&tDb&";Jet OLEDB:Database Password="&strPwd&";"
49 Case "3","MYSQL"
50 TempStr = "Driver={mySQL};Server="&strServer&";Port=3306;Option=131072;Stmt=; Database="&strDB&";Uid="&strUid&";Pwd="&strPwd&";"
51 Case "4","ORACLE"
52 TempStr = "Driver={Microsoft ODBC for Oracle};Server="&strServer&";Uid="&strUid&";Pwd="&strPwd&";"
53End Select
54CreatConn = TempStr
55End Function
56
57
58Class dbCtrl
59Private debug
60Private idbConn
61Private idbErr
62
63Private Sub Class_Initialize()
64 debug = true '调试模式是否开启
65 idbErr = "出现错误:"
66 If IsObject(Conn) Then
67 Set idbConn = Conn
68 End If
69End Sub
70
71Private Sub Class_Terminate()
72 Set idbConn = Nothing
73 If debug And idbErr<>"出现错误:" Then Response.Write(idbErr)
74End Sub
75
76Public Property Let dbConn(pdbConn)
77 If IsObject(pdbConn) Then
78 Set idbConn = pdbConn
79 Else
80 Set idbConn = Conn
81 End If
82End Property
83
84Public Property Get dbErr()
85 dbErr = idbErr
86End Property
87
88Public Property Get Version
89 Version = "ASP Database Ctrl V1.0 By ColdStone"
90End Property
91
92Public Function AutoID(ByVal TableName)
93 On Error Resume Next
94 Dim m_No,Sql, m_FirTempNo
95 Set m_No=Server.CreateObject("adodb.recordset")
96 Sql="SELECT * FROM ["&TableName&"]"
97 m_No.Open Sql,idbConn,1,1
98 If m_No.EOF Then
99 AutoID=1
100 Else
101 Do While Not m_No.EOF
102 m_FirTempNo=m_No.Fields(0).Value
103 m_No.MoveNext
104 If m_No.EOF Then
105 AutoID=m_FirTempNo+1
106 End If
107 Loop
108 End If
109 If Err.number <> 0 Then
110 idbErr = idbErr & "无效的查询条件!<br />"
111 If debug Then idbErr = idbErr & "错误信息:"& Err.Description
112 Response.End()
113 Exit Function
114 End If
115 m_No.close
116 Set m_No = Nothing
117End Function
118
119Public Function GetRecord(ByVal TableName,ByVal FieldsList,ByVal Condition,ByVal OrderField,ByVal ShowN)
120 On Error Resume Next
121 Dim rstRecordList
122 Set rstRecordList=Server.CreateObject("adodb.recordset")
123 With rstRecordList
124 .ActiveConnection = idbConn
125 .CursorType = 1
126 .LockType = 1
127 .Source = wGetRecord(TableName,FieldsList,Condition,OrderField,ShowN)
128 .Open
129 If Err.number <> 0 Then
130 idbErr = idbErr & "无效的查询条件!<br />"
131 If debug Then idbErr = idbErr & "错误信息:"& Err.Description
132 .Close
133 Set rstRecordList = Nothing
134 Response.End()
135 Exit Function
136 End If
137 End With
138 Set GetRecord=rstRecordList
139End Function
140
141Public Function wGetRecord(ByVal TableName,ByVal FieldsList,ByVal Condition,ByVal OrderField,ByVal ShowN)
142 Dim strSelect
143 strSelect="select "
144 If ShowN > 0 Then
145 strSelect = strSelect & " top " & ShowN & " "
146 End If
147 If FieldsList<>"" Then
148 strSelect = strSelect & FieldsList
149 Else
150 strSelect = strSelect & " * "
151 End If
152 strSelect = strSelect & " from [" & TableName & "]"
153 If Condition <> "" Then
154 strSelect = strSelect & " where " & ValueToSql(TableName,Condition,1)
155 End If
156 If OrderField <> "" Then
157 strSelect = strSelect & " order by " & OrderField
158 End If
159 wGetRecord = strSelect
160End Function
161
162Public Function GetRecordBySQL(ByVal strSelect)
163 On Error Resume Next
164 Dim rstRecordList
165 Set rstRecordList=Server.CreateObject("adodb.recordset")
166 With rstRecordList
167 .ActiveConnection =idbConn
168 .CursorType = 1
169 .LockType = 1
170 .Source = strSelect
171 .Open
172 If Err.number <> 0 Then
173 idbErr = idbErr & "无效的查询条件!<br />"
174 If debug Then idbErr = idbErr & "错误信息:"& Err.Description
175 .Close
176 Set rstRecordList = Nothing
177 Response.End()
178 Exit Function
179 End If
180 End With
181 Set GetRecordBySQL = rstRecordList
182End Function
183
184Public Function GetRecordDetail(ByVal TableName,ByVal Condition)
185 On Error Resume Next
186 Dim rstRecordDetail, strSelect
187 Set rstRecordDetail=Server.CreateObject("adodb.recordset")
188 With rstRecordDetail
189 .ActiveConnection =idbConn
190 strSelect = "select * from [" & TableName & "] where " & ValueToSql(TableName,Condition,1)
191 .CursorType = 1
192 .LockType = 1
193 .Source = strSelect
194 .Open
195 If Err.number <> 0 Then
196 idbErr = idbErr & "无效的查询条件!<br />"
197 If debug Then idbErr = idbErr & "错误信息:"& Err.Description
198 .Close
199 Set rstRecordDetail = Nothing
200 Response.End()
201 Exit Function
202 End If
203 End With
204 Set GetRecordDetail=rstRecordDetail
205End Function
206
207Public Function AddRecord(ByVal TableName, ByVal ValueList)
208 On Error Resume Next
209 DoExecute(wAddRecord(TableName,ValueList))
210 If Err.number <> 0 Then
211 idbErr = idbErr & "写入数据库出错!<br />"
212 If debug Then idbErr = idbErr & "错误信息:"& Err.Description
213 'DoExecute "ROLLBACK TRAN Tran_Insert" '如果存在添加事务(事务滚回)
214 AddRecord = 0
215 Exit Function
216 End If
217 AddRecord = AutoID(TableName)-1
218End Function
219
220Public Function wAddRecord(ByVal TableName, ByVal ValueList)
221 Dim TempSQL, TempFiled, TempValue
222 TempFiled = ValueToSql(TableName,ValueList,2)
223 TempValue = ValueToSql(TableName,ValueList,3)
224 TempSQL = "Insert Into [" & TableName & "] (" & TempFiled & ") Values (" & TempValue & ")"
225 wAddRecord = TempSQL
226End Function
227
228Public Function UpdateRecord(ByVal TableName,ByVal Condition,ByVal ValueList)
229 On Error Resume Next
230 DoExecute(wUpdateRecord(TableName,Condition,ValueList))
231 If Err.number <> 0 Then
232 idbErr = idbErr & "更新数据库出错!<br />"
233 If debug Then idbErr = idbErr & "错误信息:"& Err.Description
234 'DoExecute "ROLLBACK TRAN Tran_Update" '如果存在添加事务(事务滚回)
235 UpdateRecord = 0
236 Exit Function
237 End If
238 UpdateRecord = 1
239End Function
240
241Public Function wUpdateRecord(ByVal TableName,ByVal Condition,ByVal ValueList)
242 Dim TmpSQL
243 TmpSQL = "Update ["&TableName&"] Set "
244 TmpSQL = TmpSQL & ValueToSql(TableName,ValueList,0)
245 TmpSQL = TmpSQL & " Where " & ValueToSql(TableName,Condition,1)
246 wUpdateRecord = TmpSQL
247End Function
248
249Public Function DeleteRecord(ByVal TableName,ByVal IDFieldName,ByVal IDValues)
250 On Error Resume Next
251 Dim Sql
252 Sql = "Delete From ["&TableName&"] Where ["&IDFieldName&"] In ("
253 If IsArray(IDValues) Then
254 Sql = Sql & "Select ["&IDFieldName&"] From ["&TableName&"] Where " & ValueToSql(TableName,IDValues,1)
255 Else
256 Sql = Sql & IDValues
257 End If
258 Sql = Sql & ")"
259 DoExecute(Sql)
260 If Err.number <> 0 Then
261 idbErr = idbErr & "删除数据出错!<br />"
262 If debug Then idbErr = idbErr & "错误信息:"& Err.Description
263 'DoExecute "ROLLBACK TRAN Tran_Delete" '如果存在添加事务(事务滚回)
264 DeleteRecord = 0
265 Exit Function
266 End If
267 DeleteRecord = 1
268End Function
269
270Public Function wDeleteRecord(ByVal TableName,ByVal IDFieldName,ByVal IDValues)
271 On Error Resume Next
272 Dim Sql
273 Sql = "Delete From ["&TableName&"] Where ["&IDFieldName&"] In ("
274 If IsArray(IDValues) Then
275 Sql = Sql & "Select ["&IDFieldName&"] From ["&TableName&"] Where " & ValueToSql(TableName,IDValues,1)
276 Else
277 Sql = Sql & IDValues
278 End If
279 Sql = Sql & ")"
280 wDeleteRecord = Sql
281End Function
282
2'==========================================================================
3'文件名称:clsDbCtrl.asp
4'功 能:数据库操作类
5'作 者:coldstone (coldstone[在]qq.com)
6'程序版本:v1.0.5
7'完成时间:2005.09.23
8'修改时间:2007.10.30
9'版权声明:可以在任意作品中使用本程序代码,但请保留此版权信息。
10' 如果你修改了程序中的代码并得到更好的应用,请发送一份给我,谢谢。
11'==========================================================================
12
13Dim a : a = CreatConn(0, "master", "localhost", "sa", "") 'MSSQL数据库
14'Dim a : a = CreatConn(1, "Data/%TestDB%.mdb", "", "", "") 'Access数据库
15'Dim a : a = CreatConn(1, "E:\MyWeb\Data\%TestDB%.mdb", "", "", "mdbpassword")
16Dim Conn
17'OpenConn() '在加载时就建立的默认连接对象Conn,默认使用数据库a
18Sub OpenConn : Set Conn = Oc(a) : End Sub
19Sub CloseConn : Co(Conn) : End Sub
20
21Function Oc(ByVal Connstr)
22On Error Resume Next
23Dim objConn
24Set objConn = Server.CreateObject("ADODB.Connection")
25objConn.Open Connstr
26If Err.number <> 0 Then
27 Response.Write("<div id=""DBError"">数据库服务器端连接错误,请与网站管理员联系。</div>")
28 'Response.Write("错误信息:" & Err.Description)
29 objConn.Close
30 Set objConn = Nothing
31 Response.End
32End If
33Set Oc = objConn
34End Function
35
36Sub Co(obj)
37On Error Resume Next
38Set obj = Nothing
39End Sub
40
41Function CreatConn(ByVal dbType, ByVal strDB, ByVal strServer, ByVal strUid, ByVal strPwd)
42Dim TempStr
43Select Case dbType
44 Case "0","MSSQL"
45 TempStr = "driver={sql server};server="&strServer&";uid="&strUid&";pwd="&strPwd&";database="&strDB
46 Case "1","ACCESS"
47 Dim tDb : If Instr(strDB,":")>0 Then : tDb = strDB : Else : tDb = Server.MapPath(strDB) : End If
48 TempStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&tDb&";Jet OLEDB:Database Password="&strPwd&";"
49 Case "3","MYSQL"
50 TempStr = "Driver={mySQL};Server="&strServer&";Port=3306;Option=131072;Stmt=; Database="&strDB&";Uid="&strUid&";Pwd="&strPwd&";"
51 Case "4","ORACLE"
52 TempStr = "Driver={Microsoft ODBC for Oracle};Server="&strServer&";Uid="&strUid&";Pwd="&strPwd&";"
53End Select
54CreatConn = TempStr
55End Function
56
57
58Class dbCtrl
59Private debug
60Private idbConn
61Private idbErr
62
63Private Sub Class_Initialize()
64 debug = true '调试模式是否开启
65 idbErr = "出现错误:"
66 If IsObject(Conn) Then
67 Set idbConn = Conn
68 End If
69End Sub
70
71Private Sub Class_Terminate()
72 Set idbConn = Nothing
73 If debug And idbErr<>"出现错误:" Then Response.Write(idbErr)
74End Sub
75
76Public Property Let dbConn(pdbConn)
77 If IsObject(pdbConn) Then
78 Set idbConn = pdbConn
79 Else
80 Set idbConn = Conn
81 End If
82End Property
83
84Public Property Get dbErr()
85 dbErr = idbErr
86End Property
87
88Public Property Get Version
89 Version = "ASP Database Ctrl V1.0 By ColdStone"
90End Property
91
92Public Function AutoID(ByVal TableName)
93 On Error Resume Next
94 Dim m_No,Sql, m_FirTempNo
95 Set m_No=Server.CreateObject("adodb.recordset")
96 Sql="SELECT * FROM ["&TableName&"]"
97 m_No.Open Sql,idbConn,1,1
98 If m_No.EOF Then
99 AutoID=1
100 Else
101 Do While Not m_No.EOF
102 m_FirTempNo=m_No.Fields(0).Value
103 m_No.MoveNext
104 If m_No.EOF Then
105 AutoID=m_FirTempNo+1
106 End If
107 Loop
108 End If
109 If Err.number <> 0 Then
110 idbErr = idbErr & "无效的查询条件!<br />"
111 If debug Then idbErr = idbErr & "错误信息:"& Err.Description
112 Response.End()
113 Exit Function
114 End If
115 m_No.close
116 Set m_No = Nothing
117End Function
118
119Public Function GetRecord(ByVal TableName,ByVal FieldsList,ByVal Condition,ByVal OrderField,ByVal ShowN)
120 On Error Resume Next
121 Dim rstRecordList
122 Set rstRecordList=Server.CreateObject("adodb.recordset")
123 With rstRecordList
124 .ActiveConnection = idbConn
125 .CursorType = 1
126 .LockType = 1
127 .Source = wGetRecord(TableName,FieldsList,Condition,OrderField,ShowN)
128 .Open
129 If Err.number <> 0 Then
130 idbErr = idbErr & "无效的查询条件!<br />"
131 If debug Then idbErr = idbErr & "错误信息:"& Err.Description
132 .Close
133 Set rstRecordList = Nothing
134 Response.End()
135 Exit Function
136 End If
137 End With
138 Set GetRecord=rstRecordList
139End Function
140
141Public Function wGetRecord(ByVal TableName,ByVal FieldsList,ByVal Condition,ByVal OrderField,ByVal ShowN)
142 Dim strSelect
143 strSelect="select "
144 If ShowN > 0 Then
145 strSelect = strSelect & " top " & ShowN & " "
146 End If
147 If FieldsList<>"" Then
148 strSelect = strSelect & FieldsList
149 Else
150 strSelect = strSelect & " * "
151 End If
152 strSelect = strSelect & " from [" & TableName & "]"
153 If Condition <> "" Then
154 strSelect = strSelect & " where " & ValueToSql(TableName,Condition,1)
155 End If
156 If OrderField <> "" Then
157 strSelect = strSelect & " order by " & OrderField
158 End If
159 wGetRecord = strSelect
160End Function
161
162Public Function GetRecordBySQL(ByVal strSelect)
163 On Error Resume Next
164 Dim rstRecordList
165 Set rstRecordList=Server.CreateObject("adodb.recordset")
166 With rstRecordList
167 .ActiveConnection =idbConn
168 .CursorType = 1
169 .LockType = 1
170 .Source = strSelect
171 .Open
172 If Err.number <> 0 Then
173 idbErr = idbErr & "无效的查询条件!<br />"
174 If debug Then idbErr = idbErr & "错误信息:"& Err.Description
175 .Close
176 Set rstRecordList = Nothing
177 Response.End()
178 Exit Function
179 End If
180 End With
181 Set GetRecordBySQL = rstRecordList
182End Function
183
184Public Function GetRecordDetail(ByVal TableName,ByVal Condition)
185 On Error Resume Next
186 Dim rstRecordDetail, strSelect
187 Set rstRecordDetail=Server.CreateObject("adodb.recordset")
188 With rstRecordDetail
189 .ActiveConnection =idbConn
190 strSelect = "select * from [" & TableName & "] where " & ValueToSql(TableName,Condition,1)
191 .CursorType = 1
192 .LockType = 1
193 .Source = strSelect
194 .Open
195 If Err.number <> 0 Then
196 idbErr = idbErr & "无效的查询条件!<br />"
197 If debug Then idbErr = idbErr & "错误信息:"& Err.Description
198 .Close
199 Set rstRecordDetail = Nothing
200 Response.End()
201 Exit Function
202 End If
203 End With
204 Set GetRecordDetail=rstRecordDetail
205End Function
206
207Public Function AddRecord(ByVal TableName, ByVal ValueList)
208 On Error Resume Next
209 DoExecute(wAddRecord(TableName,ValueList))
210 If Err.number <> 0 Then
211 idbErr = idbErr & "写入数据库出错!<br />"
212 If debug Then idbErr = idbErr & "错误信息:"& Err.Description
213 'DoExecute "ROLLBACK TRAN Tran_Insert" '如果存在添加事务(事务滚回)
214 AddRecord = 0
215 Exit Function
216 End If
217 AddRecord = AutoID(TableName)-1
218End Function
219
220Public Function wAddRecord(ByVal TableName, ByVal ValueList)
221 Dim TempSQL, TempFiled, TempValue
222 TempFiled = ValueToSql(TableName,ValueList,2)
223 TempValue = ValueToSql(TableName,ValueList,3)
224 TempSQL = "Insert Into [" & TableName & "] (" & TempFiled & ") Values (" & TempValue & ")"
225 wAddRecord = TempSQL
226End Function
227
228Public Function UpdateRecord(ByVal TableName,ByVal Condition,ByVal ValueList)
229 On Error Resume Next
230 DoExecute(wUpdateRecord(TableName,Condition,ValueList))
231 If Err.number <> 0 Then
232 idbErr = idbErr & "更新数据库出错!<br />"
233 If debug Then idbErr = idbErr & "错误信息:"& Err.Description
234 'DoExecute "ROLLBACK TRAN Tran_Update" '如果存在添加事务(事务滚回)
235 UpdateRecord = 0
236 Exit Function
237 End If
238 UpdateRecord = 1
239End Function
240
241Public Function wUpdateRecord(ByVal TableName,ByVal Condition,ByVal ValueList)
242 Dim TmpSQL
243 TmpSQL = "Update ["&TableName&"] Set "
244 TmpSQL = TmpSQL & ValueToSql(TableName,ValueList,0)
245 TmpSQL = TmpSQL & " Where " & ValueToSql(TableName,Condition,1)
246 wUpdateRecord = TmpSQL
247End Function
248
249Public Function DeleteRecord(ByVal TableName,ByVal IDFieldName,ByVal IDValues)
250 On Error Resume Next
251 Dim Sql
252 Sql = "Delete From ["&TableName&"] Where ["&IDFieldName&"] In ("
253 If IsArray(IDValues) Then
254 Sql = Sql & "Select ["&IDFieldName&"] From ["&TableName&"] Where " & ValueToSql(TableName,IDValues,1)
255 Else
256 Sql = Sql & IDValues
257 End If
258 Sql = Sql & ")"
259 DoExecute(Sql)
260 If Err.number <> 0 Then
261 idbErr = idbErr & "删除数据出错!<br />"
262 If debug Then idbErr = idbErr & "错误信息:"& Err.Description
263 'DoExecute "ROLLBACK TRAN Tran_Delete" '如果存在添加事务(事务滚回)
264 DeleteRecord = 0
265 Exit Function
266 End If
267 DeleteRecord = 1
268End Function
269
270Public Function wDeleteRecord(ByVal TableName,ByVal IDFieldName,ByVal IDValues)
271 On Error Resume Next
272 Dim Sql
273 Sql = "Delete From ["&TableName&"] Where ["&IDFieldName&"] In ("
274 If IsArray(IDValues) Then
275 Sql = Sql & "Select ["&IDFieldName&"] From ["&TableName&"] Where " & ValueToSql(TableName,IDValues,1)
276 Else
277 Sql = Sql & IDValues
278 End If
279 Sql = Sql & ")"
280 wDeleteRecord = Sql
281End Function
282