欢迎光临
我们一直在努力

自动获取表格数据添加,修改数据库数据的类-ASP教程,数据库相关

建站超值云服务器,限时71元/月

此类个人觉得是很有用的!!!对于以后提交表单数据,不用再一个一个去写了,直接引用该类,再save或edit即可,简单多了,但当然,因为它不是智能的,所以对于某些数据格式是不能做核查的!!使用示例代码如下:

<%

dim action

action=request("action")

if action="save" then

dim objclass

set objclass=new saveformdata

objclass.mdbfile=server.mappath("data/data.mdb")

objclass.saverecord "number","*","id"

objclass.saverecord "number","num1,text",""

objclass.editrecord "number","*","id=15","id"

set objclass=nothing

end if

%>

<!doctype html public "-//w3c//dtd html 4.01 transitional//en"

"http://www.w3.org/tr/html4/loose.dtd">

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=gb2312">

<title>无标题文档</title>

</head>

<body>

<form name="form1" method="post" action="index.asp?action=save">

<table width="100%" border="0" cellspacing="2" cellpadding="0">

<tr>

<td width="19%" height="20">num1</td>

<td width="81%"><input name="num1" type="text" id="num1"></td>

</tr>

<tr>

<td height="20">num2</td>

<td><input name="num2" type="text" id="num2"></td>

</tr>

<tr>

<td height="20">num3</td>

<td><input name="num3" type="text" id="num3"></td>

</tr>

<tr>

<td height="20">text</td>

<td><input name="text" type="text" id="text"></td>

</tr>

<tr>

<td height="20">&nbsp;</td>

<td><input type="submit" name="submit" value="提交"></td>

</tr>

</table>

</form>

</body>

</html>

类的说明:

如果是使用access数据库,则首先指定数据库的绝对地址![obj].mdbfile=“数据库文件地址“

如果不是access数据库,则指定类对象的conn属性,示例:set [obj].conn=[connection对象]

然后就可以使用

[obj].saverecord(“表名“,“填加字段名列表“,“不填加字段名列表”) = 新增加数据

说明: 此方法返回true或false,true则新填加新数据成功,否则失败!

“表名”:要填表加新记录数据的数据表名

“填加字段名列表”:新添数据时的字段名,用“逗号”隔开,如:“name,word,sex“

“不填加字段名列表”:添加数据时对此字段列表里包括的字段不进行添加操作。

[obj].saverecord “user“,“*“,“id“

[obj].editrecord(“表名“,“修改字段名列表“,“修改条件”,“不修改字段列表“)=修改某条数据

“表名”,“修改字段列表”和“不修改字段列表”同saverecord方法一样!

“修改条件”:sql查询条件,不带“where”

示例:[obj].editrecord “user“,“pass,sex“,“id=22“,““

注意:“填加字段列表”和“修改字段列表”可以使用“”值或“*”值,表明修改所有字段,但建议此时“不填加字段名列表”和“不修改字段名列表”里写上“自动增加”型的字段名,要不然填加或修改数据时将会失败!

类代码:

<%

/*****************************************************************************************

class saveformdata

private c_errnumber 错误返回代码

private c_numericallownull 数字型字段时是否允许接收非数字值,true = 可以(非数字值时用0代替) false = 不可以(非数字值时将会出错,errnumber = 9)

private c_datetimeallownull 日期时间型字段时是否允许接收非日期时间,true = 可以(非日期时间值时用(now)代替) false = 不可以(非日期时间值时将会出错,errnumber = 10)

private c_conn 数据库conn连接对象

private c_mdbfile access数据库文件地址,如果不是设置conn属性,则该属性一定不能为空!

private sub class_initialize

c_conn=null

c_numericallownull=true

c_datetimeallownull=true

end sub

private sub class_terminate

if not isnothing(c_conn) then

c_conn.close

set c_conn=nothing

end if

end sub

/***************************************************************************

/* 设置/返回conn对象

/*说明:添加这个是为了其它数据库(如:mssql)

/***************************************************************************

public property set conn(snewvalue)

on error resume next

if not isnothing(snewvalue) then

c_conn.close

set c_conn=nothing

end if

set c_conn=snewvalue

end property

public property get conn

if not isnothing(c_conn) then

set conn=c_conn

else

conn=null

end if

end property

/***************************************************************************

/* 设置/返回数据库文件

/*说明:

/***************************************************************************

public property let mdbfile(snewvalue)

if trim(snewvalue)<>c_mdbfile then 如果数据库文件改变则重新建立conn对象

c_mdbfile=trim(snewvalue)

call recreateconn

end if

end property

public property get mdbfile

mdbfile=c_mdbfile

end property

/***************************************************************************

/* 设置/返回错误代码

/*说明:

/***************************************************************************

public property get errnumber

errnumber=c_errnumber

end property

public sub clearerr

c_errnumber=0

end sub

/***************************************************************************

/* 设置/返回numericallownull(数值型字段是否允许空值)

/*说明:

/***************************************************************************

public property let numericallownull(snewvalue)

c_numericallownull=cbool(snewvalue)

end property

public property get numericallownull

numericallownull=c_numericallownull

end property

/***************************************************************************

/* 设置/返回datetimeallownull(数值型字段是否允许空值)

/*说明:

/***************************************************************************

public property let datetimeallownull(snewvalue)

c_datetimeallownull=cbool(snewvalue)

end property

public property get datetimeallownull

datetimeallownull=c_datetimeallownull

end property

/***************************************************************************

/* 通过数据库的所有字段表进行获取数据并保存

/*说明:stable = 表名 sfields = 要保存的字段名 notfields = 不保存的字段名

/***************************************************************************

public function saverecord(byval stable,byval sfields,byval notfields)

on error resume next

dim rs,i,stext,sitem

dim darray()

call initconn

if isnull(c_conn) then

errnumber = 1 errnumber = 1 保存数据进数据库时出未知错误

saverecord=false

exit function

end if

set rs = server.createobject("adodb.recordset")

if trim(sfields)="" then sfields="*"

notfields=","&notfields&","

rs.open "select "&sfields&" from ["&stable&"]",c_conn,1,3

redim darray(rs.fields.count-1) 临时存放数据数组

for i=0 to rs.fields.count-1

set sitem=rs.fields.item(i)

if instr(notfields,","&sitem.name&",")<1 then 排除字段

darray(i)=tspace(request(sitem.name)) 取得表格数据

if istextfields(sitem.type) then 如果是字符字段则取得字段大小的数据

darray(i)=left(darray(i),sitem.definedsize)

elseif isnumericfields(sitem.type) then 如果是数值型字段,则判断是否是数值否则不给予添加

if not isnumeric(darray(i)) then

if c_numericallownull then

darray(i)=0

else

errnumber = 9 errnumber = 9 (获取的是非数字值)

saverecord=false

exit function

end if

end if

elseif isdatetimefields(sitem.type) then 日期时间型字段

if not isdate(darray(i)) then

if c_datetimeallownull then

darray(i)=date

else

errnumber = 10 errnumber = 10 (获取的是非日期时间型)

saverecord=false

exit function

end if

end if

end if

end if

next

添加进数据库

rs.addnew

for i=0 to rs.fields.count-1

set sitem=rs.fields.item(i)

if instr(notfields,","&sitem.name&",")<1 then

rs(sitem.name)=darray(i)

end if

next

if err.number<>0 then

errnumber = 1 errnumber = 3 保存数据进数据库时出未知错误

saverecord=false

err.clear

exit function

end if

rs.update

rs.close

set rs=nothing

erase darray 清除数组数据

if err.number<>0 then

errnumber = 1 errnumber = 1 保存数据进数据库时出未知错误

saverecord=false

err.clear

else

saverecord=true

end if

end function

/***************************************************************************

/* 通过数据库的所有字段表进行获取数据并保存

/*说明:stable = 表名 swhere =查询的条件 sfields = 要修改数据的列表名

/***************************************************************************

public function editrecord(byval stable,byval sfields,byval swhere,byval notfields)

on error resume next

dim rs,i,stext,sitem

dim darray()

call initconn

if isnull(c_conn) then

errnumber = 3 errnumber = 1 保存数据进数据库时出未知错误

editrecord=false

exit function

end if

set rs = server.createobject("adodb.recordset")

if trim(sfields)="" then sfields="*"

if trim(swhere)="" then swhere="1=1"

notfields=","&notfields&","

rs.open "select "&sfields&" from ["&stable&"] where "&swhere,c_conn,1,3

redim darray(rs.fields.count-1) 临时存放数据数组

for i=0 to rs.fields.count-1

set sitem=rs.fields.item(i)

if instr(notfields,","&sitem.name&",")<1 then

darray(i)=tspace(request(sitem.name)) 取得表格数据

if istextfields(sitem.type) then 如果是字符字段则取得字段大小的数据

darray(i)=left(darray(i),sitem.definedsize)

elseif isnumericfields(sitem.type) then 如果是数值型字段,则判断是否是数值否则不给予添加

if not isnumeric(darray(i)) then

if c_numericallownull then

darray(i)=0

else

errnumber = 9 errnumber = 9 (获取的是非数字值)

editrecord=false

exit function

end if

end if

elseif isdatetimefields(sitem.type) then 日期时间型字段

if not isdate(darray(i)) then

if c_datetimeallownull then

darray(i)=date

else

errnumber = 10 errnumber = 10 (获取的是非日期时间型)

editrecord=false

exit function

end if

end if

end if

end if

next

修改数据库

for i=0 to rs.fields.count-1

set sitem=rs.fields.item(i)

if instr(notfields,","&sitem.name&",")<1 then

rs(sitem.name)=darray(i)

end if

next

if err.number<>0 then

errnumber = 3 errnumber = 3 保存数据进数据库时出未知错误

editrecord=false

err.clear

exit function

end if

rs.update

rs.close

set rs=nothing

erase darray 清除数组数据

if err.number<>0 then

errnumber = 3 errnumber = 3 保存数据进数据库时出未知错误

editrecord=false

err.clear

else

editrecord=true

end if

end function

/***************************************************************************

/* 初始化adodb.connection组件对象

/*

/***************************************************************************

private sub initconn()

on error resume next

dim connstr

if isnothing(c_conn) then

if c_mdbfile="" then

c_conn=null

c_errnumber = 8 errnumber = 8 (打开数据库出错)

exit sub

else

set c_conn=server.createobject("adodb.connection")

connstr="provider=microsoft.jet.oledb.4.0;data source=" & c_mdbfile

c_conn.open connstr

if err.number<>0 then

c_errnumber = 8 errnumber = 8 (打开数据库出错)

err.clear

c_conn=null

exit sub

end if

end if

end if

end sub

private sub recreateconn()

on error resume next

dim connstr

if not isnothing(c_conn) then

c_conn.close

else

set c_conn=server.createobject("adodb.connection")

end if

connstr="provider=microsoft.jet.oledb.4.0;data source=" & c_mdbfile

c_conn.open connstr

if err.number<>0 then

c_errnumber = 8 errnumber = 8 (打开数据库出错)

err.clear

c_conn=null

end if

end sub

private function tspace(byval sval)

sval=trim(sval)

sval=replace(sval,"","")

tspace=sval

end function

/**字段的type属性集*******

/*type = 2 整形

/*type = 3 长整形

/*type = 4 单精度形

/*type = 5 双精度形

/*type = 6 货币形

/*type = 7 日期时间

/*type = 17 字节形

/*type = 11 逻辑形

/*type = 202 文本型

/*type = 203 备注型

/*type = 205 ole对象

private function isnumericfields(byval itype)

if itype=2 or itype=3 or itype=4 or itype=5 or itype=6 then

isnumberfields=true

else

isnumberfields=false

end if

end function

private function istextfields(byval itype)

if itype=202 then

istextfields=true

else

istextfields=false

end if

end function

private function isdatetimefields(byval itype)

if itype=7 then

isdatetimefields=true

else

isdatetimefields=false

end if

end function

/**********************************************************************************

/* 函数名:判断obj对象是否是空值

/**********************************************************************************

private function isnothing(obj)

if not isobject(obj) then

isnothing=true

exit function

end if

if obj is nothing then

isnothing=true

exit function

end if

if isnull(obj) then

isnothing=true

exit function

end if

isnothing=false

end function

end class

%>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 自动获取表格数据添加,修改数据库数据的类-ASP教程,数据库相关
分享到: 更多 (0)