''============================
''涵数名:CheckTable
''参 数:myTable 要判断的表
''作 用:判断数据库中是否存在指定的表
''============================
Function CheckTable (myTable)
'列出数据库中的所有表
dim rs,getTableName
set rs=conn.openSchema(20)
rs.movefirst
do Until rs.EOF
if rs("TABLE_TYPE")="TABLE" then getTableName=getTableName+rs("TABLE_NAME")&","
rs.movenext
loop
rs.close
set rs=nothing
'判断数据库中是否存在此表(下面两行代码使待比较表和指定表前后都加上豆号,以精确比较)
dim getTableName2,myTable2
getTableName2=","&getTableName '此字符串后面已经有豆号
myTable2=","&myTable&","
If instr(getTableName2,myTable2)<>0 Then
CheckTable=1 '存在
else
CheckTable=0 '不存在
end if
End Function
''============================
''涵数名:CheckFields
''参 数:myTable 要判断的表
''参 数:myFields 要判断的字段
''作 用:判断表中是否存在指定的字段
''============================
Function CheckFields (myTable,myFields)
'如果表存在继续执行,否则跳过
if CheckTable (myTable)=1 then
dim rs,i,getFieldsName
'列出表中的所有字段
set rs=conn.execute("select * from "&myTable&"")
for i=0 to rs.fields.count-1
getFieldsName=getFieldsName+rs.fields(i).name & ","
next
rs.close
set rs=nothing
end if
'判断表中是否存在此字段(下面两行代码使待比较字段和指定字段前后都加上豆号,以精确比较)
dim getFieldsName2,myFields2
getFieldsName2=","&getFieldsName '此字符串后面已经有豆号
myFields2=","&myFields&","
if instr(getFieldsName2,myFields2)<>0 Then
CheckFields=1 '存在
else
CheckFields=0 '不存在
end if
End function
'--------------------简单应用示例---------------
'在指定的表中,删除字段
'if
CheckTable(myTable)=1 and CheckFields (myTable,myFields)=1
then:Conn.execute ("ALTER TABLE ["&myTable&"] DROP COLUMN
"&myFields&"")
'如果表存在数据库中,删除表
'if CheckTable(myTable)=1 then:conn.execute ("DROP TABLE "&myTable&"")
'如果表不存在数据库中,建立表 (其中Id为自动编号的主键,……)
'if
CheckTable(myTable)=0 then:conn.execute ("CREATE TABLE
"&myTable&" (Id autoincrement(1,1) primary key, 字段A int, 字段B
text)")
'在指定的表中,添加类型为varchar型、长度为20的字段……
'if
CheckTable(myTable)=1 and CheckFields (myTable,myFields)=0
then:Conn.execute ("ALTER TABLE ["&myTable&"] ADD COLUMN
"&myFields&" VARCHAR(20)")
评论