asp根據表單自動產生sql語句的函數

來源:互聯網
上載者:User

每次在操作資料庫的時候最煩的就是根據表單提交的內容寫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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.