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