网上找资料发现的,但是调试的时候发现有一些问题,
改了一下,还有一定的问题,但是可以做一般使用了。
没有考虑数据类型的问题,还有SQL Server 和access的区别,以后有时间再改进吧,不知道效率怎么样。
如果有朋友改进,也麻烦给我发一份。
1
2'生成SQL字符串的类。
3'原作:无名氏
4'改进:aloxy
5'E-mail:[email protected]
6'OICQ:331622229
7class SQLString
8'************************************
9'变量定义
10'************************************
11'sTableName ---- 表名
12'iSQLType ----SQL语句类型:0-增加,1-更新,2-删除,3-查询
13'sWhere ---- 条件
14'sOrder ---- 排序方式
15'sSQL ----值
16
17Private sTableName,iSQLType,sWhere,sOrder,sSQL
18
19'************************************
20'类初始化/结束
21'************************************
22
23Private Sub Class_Initialize()
24sTableName=""
25iSQLType=0
26sWhere=""
27sOrder=""
28sSQL=""
29End Sub
30
31Private Sub Class_Terminate()
32
33End Sub
34
35'************************************
36'属性
37'************************************
38'设置表名的属性
39Public Property Let TableName(value)
40sTableName=value
41End Property
42'设置条件
43Public Property Let Where(value)
44sWhere=value
45End Property
46'设置排序方式
47Public Property Let Order(value)
48sOrder=value
49End Property
50'设置查询语句的类型
51
52Public property Let SQLType(value)
53iSQLType=value
54select case iSQLType
55case 0
56sSQL="insert into #0 (#1) values (#2)"
57case 1
58sSQL="update #0 set #1=#2"
59case 2
60sSQL="delete from #0 "
61case 3
62sSQL="select #1 from #0 "
63end select
64End Property
65
66'************************************
67'函数
68'************************************
69'增加字段(字段名称,字段值)
70
71Public Sub AddField(sFieldName,sValue)
72select case iSQLType
73case 0
74sSQL=replace(sSQL,"#1",sFieldName & ",#1")
75sSQL=replace(sSQL,"#2","'" & sValue & "',#2")
76case 1
77sSQL=replace(sSQL,"#1",sFieldName)
78sSQL=replace(sSQL,"#2","'" & sValue & "',#1=#2")
79case 3
80sSQL=replace(sSQL,"#1",sFieldName & ",#1")
81End Select
82End Sub
83
84'返回SQL语句
85Public Function ReturnSQL()
86sSQL=replace(sSQL,"#0",sTableName)
87select case iSQLType
88case 0
89sSQL=replace(sSQL,",#1","")
90sSQL=replace(sSQL,",#2","")
91case 1
92sSQL=replace(sSQL,",#1=#2","")
93case 3
94sSQL=replace(sSQL,",#1","")
95end Select
96if sWhere<>"" and iSQLType<>0 then
97sSQL=sSQL & " where " & sWhere
98end if
99if sOrder<>"" and iSQLType<>0 then
100sSQL=sSQL & " order by " & sOrder
101end if
102ReturnSQL=sSQL
103End Function
104
105'清空语句
106
107Public Sub Clear()
108sTableName=""
109iSQLType=0
110sWhere=""
111sOrder=""
112sSQL=""
113End Sub
114End class
1
2'下面是调用的例子,数据类型的问题请继续修改上面的类里的定义,如果有问题可以问我
3set a =new SQLString '创建类对象
4a.TableName=" message " '设置表名为message
5'a.where=" issend =9"
6'a.order=" issend desc"
7a.SQLType=0 '设置查询类型为增加记录
8a.AddField " incept", "2"
9a.AddField " sender ", " 3 "
10a.AddField " title ", " 4 "
11a.AddField " sender ", "5 "
12a.AddField " content ", " 6 "
13a.AddField " sendtime ", "7"
14a.AddField " flag", 8
15a.AddField " issend ", 9
16
17Response.Write a.ReturnSQl
18set a=nothing