程序的功能有了个大体的框架,其实可以自己添加一些功能,比如开始的数据库连接 ,可以先设置
变量然后通过init() 来选择不同类型的数据库
<%
’on error resume next
class connex
public connex
public dbpath ’———数据库路径
public dbtype ’———数据库类型 1(access) 2(sqlserver) 3(可扩充)
public connmethod ’——–连接方式 (dsn,非dsn)
public user
public pass
sub class_initialize
end sub
sub init()
connstr = “driver={microsoft access driver (*.mdb)};dbq=”&server.mappath(“date.mdb”)
set connex = server.createobject(“adodb.connection”)
connex.open connstr
catcherror(“class_terminate”)
end sub
sub catcherror( str )
if err then
err.clear
class_terminate()
response.write(“捕捉到错误,程序结束!在”&str&”处”)
response.end()
end if
end sub
’******************************************
’*通过sql语句来查找记录是否存在,容易出错
’******************************************
function hasrecordbysql( sql )
call checksql(sql,”r”)
dim rs,hasr
set rs = connex.execute( sql )
catcherror(“hasreordsql”)
if not (rs.eof or rs.bof) then
hasr = false
else
hasr = true
end if
rs.close
set rs = nothing
hasrecordbysql = hasr
end function
’***************************************
’*通过id来查找记录是否存在
’***************************************
function hasrecordbyid( strtablename , intid )
’checkvalue( intid , 1 )
dim rs,hasr
sql = “select top 1 * from “&strtablename&” where id = “&intid
call checksql(sql,”r”)
set rs = connex.execute(sql)
catcherror(“hasrecordbyid”)
if not (rs.eof or rs.bof) then
hasr = false
else
hasr = true
end if
rs.close
set rs = nothing
hasrecordbyid = hasr
end function
’**********************************************
’*通过sql语句取得记录集
’**********************************************
function getrsbysql( sql )
call checksql(sql,”r”)
dim rs
set rs = server.createobject(“adodb.recordset”)
rs.open sql,connex,1,1
set getrsbysql = rs
end function
’*********************************************
’*取得某个字段的值
’*********************************************
function getvaluebysql( sql )
call checksql(sql,”r”)
dim rs,returnvalue
set rs = connex.execute(sql)
catcherror(“getvaluebysql”)
if not( rs.eof or rs.bof ) then
returnvalue = rs(0)
else
returnvalue = “没有记录”
end if
rs.close
set rs = nothing
getvaluebysql = returnvalue
end function
’============================update,insert====================
’*********************************************
’*利用sql修改数据
’*********************************************
function updatebysql( sql )
call checksql(sql,”w”)
connex.execute(sql)
catcherror(“updatebysql”)
updatebysql = true
end function
’********************************************
’*利用sql语句插入数据
’********************************************
function insertbysql(sql)
call checksql(sql,”w”)
connex.execute(sql)
catcherror(“insertbysql”)
insertbysql = true
end function
’=====================delete=====================
’********************************************
’*通过sql语句删除
’********************************************
function deletebysql( sql )
call checksql(sql,”d”)
connex.execute(sql)
catcherror(“deletebysql”)
deletebysql = true
end function
’********************************************
’*检查sql语句权限,根据标志flag 来检测语句拥有的权限
’********************************************
sub checksql( sql , flag )
dim strsql,sincounts,doucounts,i
strsql = lcase(sql)
sincounts = 0
doucounts = 0
for i = 1 to len(strsql)
if mid(strsql,i,1) = “’” then sincounts = sincounts + 1
if mid(strsql,i,1) = “””” then douconnts = doucounts + 1
next
if (sincounts mod 2) <> 0 or (doucounts mod 2) <> 0 or instr(strsql,”;”) > 0 then
call class_terminate()
response.write(“sql语法错误!”)
response.end()
end if
select case flag
case “r”,”r”:
if instr(strsql,”delete”) > 0 or instr(strsql,”update”) or instr(strsql,”drop”) > 0 or instr(strsql,”insert”) > 0 then
class_terminate()
response.write(“权限不足,没有执行写操作的权限”)
response.end()
end if
case “w”,”w”:
if instr(strsql,”delete”) > 0 or instr(strsql,”drop”) > 0 or instr(strsql,”select”) > 0 then
class_terminate()
response.write(“权限不足,没有执行删除操作的权限”)
response.end()
end if
case “d”,”d”:
case else:
response.write(“函数checksql标志错误!”)
end select
end sub
sub class_terminate
if not isempty(friendconn) then
friendconn.close
set friendconn = nothing
catcherror()
end if
end sub
end class
%>