当前位置: 首页 > 图文教程 > 网络编程 > ASP > asp根据表单自动生成sql语句的函数

ASP
asp中利用数组实现数据库记录的批量录入方法
vbs(asp)的栈类
加密處理使密碼更安全[CFS編碼加密]
在asp中通过vbs类实现rsa加密与解密
披著羊皮的大野狼 - Session
简体中文编码对应器
len(),lift(),right()不能正常识别中文的解决方法
实现WEB中的@虚拟域名系统(原理篇)
巧用ASP生成PDF文件
二级域名原理以及程序,申请即可开通
无组件上传图片到数据库中,最完整解决方案
在ASP中使用SQL语句之1:SELECT 语句
在ASP中使用SQL语句之2:用WHERE子句设置查询条件
在ASP中使用SQL语句之3:LIKE、NOT LIKE和 BETWEEN
在ASP中使用SQL语句之4:联合语句
在ASP中使用SQL语句之5:开始执行
在ASP中使用SQL语句之6:存储查询
在ASP中使用SQL语句之7:ORDER BY
在ASP中使用SQL语句之8:随机数
在ASP中使用SQL语句之9:表单操作

ASP 中的 asp根据表单自动生成sql语句的函数


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 117 ::
收藏到网摘: n/a

每次在操作数据库的时候最烦的就是根据表单提交的内容写sql语句,特别是字段比较多的时候很麻烦,动不动就容易写错。所以我就写了下面的生成sql语句的函数,用了用觉得还可以。

程序代码:

<%
'========以下所有函数都没有加入容错机制,所以一定要保证参数的正确性========
'================参数说明================
'此Function返回的是插入数据的sql语句
'注意:使用此Function必须使form里的字段名和数据库里的字段名一致
'并且按钮不能为submit,要为button,通过javascript的submit方法提交表单
'objForm必须为request.Form
'tbName为插入数据的表名
'numStr为不需要用单引号引起来的字段,字段之间用逗号(,)分割,没有请用""代替
'=======================================
Function insertStr(objForm,tbName,numStr)
dim tbField()
dim tbfieldVal()
i=0
for each objItem in objForm
redim preserve tbField(i)
tbField(i)=objItem
redim preserve tbfieldVal(i)
numPos=instr(numStr,objItem)
if numPos<>0 then
tbfieldVal(i)=trim(objForm(objItem))
else
tbfieldVal(i)="'"&trim(objForm(objItem))&"'"
end if
i=i+1
next
insertStr="insert into "&tbName&"("&join(tbField,",")&") values("&join(tbfieldVal,",")&")"
End Function

'===================参数说明=========================
'此Function返回的更新数据的sql语句
'注意:使用此Function必须使form里的字段名和数据库里的字段名一致
'并且按钮不能为submit,要为button,通过javascript的submit方法提交表单
'objForm必须为request.Form
'tbName为更新数据的表名
'whereField为更新的条件字段,有多个请用(,)分割
'whereJoin为更新的条件字段有多个时设置是and还是or
'numStr为不需要用单引号引起来的字段,字段之间用逗号(,)分割,没有请用""代替
'===================================================
Function updateStr(objForm,tbName,whereField,whereJoin,numStr)
    dim setFieldVal()
    dim whereStrArr()
    i=0
    t=0
    for each objItem in objForm
        wherePos=instr(whereField,objItem)
        if wherePos=0 then
            redim preserve setFieldVal(i)
            numPos=instr(numStr,objItem)
            if numPos<>0 then
                setFieldVal(i)=objItem&"="&trim(objForm(objItem))
            else
                setFieldVal(i)=objItem&"='"&trim(objForm(objItem))&"'"
            end if
            i=i+1
        else
            redim preserve whereStrArr(t)
            numPos2=instr(numStr,objItem)
            if numPos2<>0 then
                whereStrArr(t)=objItem&"="&trim(objForm(objItem))
            else
                whereStrArr(t)=objItem&"='"&trim(objForm(objItem))&"'"
            end if
            t=t+1
        end if
    next
    wherePos2=instr(whereField,",")
    if wherePos2<>0 then
    whereStr=" where "&join(whereStrArr," "&whereJoin&" ")
    else
    whereStrArray=whereStrArr
    whereStr=" where "&whereStrArray(0)
    end if
    updateStr="update "&tbName&" set "&join(setFieldVal,",")&whereStr
End Function
'==============参数说明=================
'此Function返回更新数据的sql语句
'只是更新条件不是通过form提交过来的比如session等
'conditions为更新的条件
'numStr为不需要用单引号引起来的字段,字段之间用逗号(,)分割,没有请用""代替
'======================================
Function updateStr2(objForm,tbName,conditions,numStr)
    dim setFieldVal()
    i=0
    for each objItem in objForm
        redim preserve setFieldVal(i)
        numPos=instr(numStr,objItem)
        if numPos<>0 then
            setFieldVal(i)=objItem&"="&trim(replace(objForm(objItem),"'",""))
        else
            setFieldVal(i)=objItem&"='"&trim(replace(objForm(objItem),"'",""))&"'"
        end if
        i=i+1
    next
    updateStr2="update "&tbName&" set "&join(setFieldVal,",")&" where "&conditions
End Function