一个改进的ASP生成SQL命令字符串类的代码[已测] |
本文标签:SQL命令,字符串 复制代码 代码如下: <% class SQLString ************************************ 变量定义 ************************************ sTableName ---- 表名 iSQLType ----SQL语句类型:0-增加,1-更新,2-删除,3-查询 sWhere ---- 条件 sOrder ---- 排序方式 sSQL ----值 Private sTableName,iSQLType,sWhere,sOrder,sSQL ************************************ 类初始化/结束 ************************************ Private Sub Class_Initialize() sTableName="" iSQLType=0 sWhere="" sOrder="" sSQL="" End Sub Private Sub Class_Terminate() End Sub ************************************ 属性 ************************************ 设置表名的属性 Public Property Let TableName(value) sTableName=value End Property 设置条件 Public Property Let Where(value) sWhere=value End Property 设置排序方式 Public Property Let Order(value) sOrder=value End Property 设置查询语句的类型 Public property Let SQLType(value) iSQLType=value select case iSQLType case 0 sSQL="insert into {&*#}0 ({&*#}1) values ({&*#}2)" case 1 sSQL="update {&*#}0 set {&*#}1={&*#}2" case 2 sSQL="delete from {&*#}0 " case 3 sSQL="select {&*#}1 from {&*#}0 " end select End Property ************************************ 函数 ************************************ 增加字段(字段名称,字段值) Public Sub AddField(sFieldName,sValue) select case iSQLType case 0 sSQL=replace(sSQL,"{&*#}1",sFieldName & ",{&*#}1") sSQL=replace(sSQL,"{&*#}2","" & sValue & ",{&*#}2") case 1 sSQL=replace(sSQL,"{&*#}1",sFieldName) sSQL=replace(sSQL,"{&*#}2","" & sValue & ",{&*#}1={&*#}2") case 3 sSQL=replace(sSQL,"{&*#}1",sFieldName & ",{&*#}1") End Select End Sub 修改的返回字符串值的函数 返回SQL语句 Public Function ReturnSQL() sSQL=replace(sSQL,"{&*#}0",sTableName) select case iSQLType case 0 sSQL=replace(sSQL,",{&*#}1","") sSQL=replace(sSQL,",{&*#}2","") case 1 sSQL=replace(sSQL,",{&*#}1={&*#}2","") case 3 sSQL=replace(sSQL,",{&*#}1","") end Select if sWhere<>"" and iSQLType<>0 then sSQL=sSQL & " where " & sWhere end if if sOrder<>"" and iSQLType<>0 then sSQL=sSQL & " order by " & sOrder end if ReturnSQL=sSQL End Function 返回SQL语句 Public Function ReturnSQL1() sSQL=replace(sSQL,"{&*#}0",sTableName) select case iSQLType case 0 sSQL=replace(sSQL,",{&*#}1","") sSQL=replace(sSQL,",{&*#}2","") case 1 sSQL=replace(sSQL,",{&*#}1={&*#}2","") case 3 sSQL=replace(sSQL,",{&*#}1","") end Select if sWhere<>"" and iSQLType<>0 then sSQL=sSQL & " where " & sWhere end if if sOrder<>"" and iSQLType<>0 then sSQL=sSQL & " order by " & sOrder end if ReturnSQL=sSQL End Function 清空语句 Public Sub Clear() sTableName="" iSQLType=0 sWhere="" sOrder="" sSQL="" End Sub End class %> 调用例子: <% set a =new SQLString 创建类对象 a.TableName=" message " 设置表名为message a.where=" issend =9" a.order=" issend desc" a.SQLType=0 设置查询类型为增加记录 a.AddField " incept", "2" a.AddField " sender ", "%3% " a.AddField " title ", "#"&now&"#" a.AddField " sender ", "5 " a.AddField " content ", " 6 " a.AddField " sendtime ", "7" a.AddField " flag", 8 a.AddField " issend ", 9 Response.Write a.ReturnSQl set a=nothing %> <% set a =new SQLString 创建类对象 a.TableName=" message " 设置表名为message a.where=" issend =9" a.order=" issend desc" a.SQLType=0 设置查询类型为增加记录 a.AddField " incept", "2" a.AddField " sender ", "%3% " a.AddField " title ", "#"&now&"#" a.AddField " sender ", "5 " a.AddField " content ", " 6 " a.AddField " sendtime ", "7" a.AddField " flag", 8 a.AddField " issend ", 9 Response.Write a.ReturnSQl set a=nothing %> <% set a =new SQLString 创建类对象 a.TableName=" message " 设置表名为message a.where=" issend =9" a.order=" issend desc" a.SQLType=0 设置查询类型为增加记录 a.AddField " incept", "2" a.AddField " sender ", "%3% " a.AddField " title ", "#"&now&"#" a.AddField " sender ", "5 " a.AddField " content ", " 6 " a.AddField " sendtime ", "7" a.AddField " flag", 8 a.AddField " issend ", 9 Response.Write a.ReturnSQl set a=nothing %> |