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

  • 来源: 网页教学网 作者: 若水   2008-05-10/23:24
  • 每次在操作数据库的时候最烦的就是根据表单提交的内容写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#p#分页标题#e#
    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


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多