如何检查表格是否存在?
使用VB 6.0
cmd.CommandText = "drop table t1"
cmd.Execute
上面的代码工作正常,但如果表不存在则会显示“table is not exit”
如何检查表存在或表不存在?
需要VB CODE帮助吗?
答案 0 :(得分:4)
如果您只想删除表而不抛出错误消息,则可以使用以下SQL,如果您使用的是MySQL。
DROP TABLE t1 IF EXISTS
其他数据库具有类似的功能,但语法不同。在MSSQL中做同样的事情:
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1') DROP TABLE t1;
虽然看起来非常丑陋..必须有更好的语法来获得相同的结果。
答案 1 :(得分:2)
对于Jet MDB(可能通常用于许多OLEDB提供商),您可以使用以下方法:
Private Sub Main()
Dim cnDB As ADODB.Connection
Set cnDB = New ADODB.Connection
cnDB.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Jet OLEDB:Engine Type=5;Data Source='sample.mdb'"
'Check presence of table --------------
Dim rsSchema As ADODB.Recordset
Set rsSchema = _
cnDB.OpenSchema(adSchemaColumns, _
Array(Empty, Empty, "t1", Empty))
If rsSchema.BOF And rsSchema.EOF Then
MsgBox "Table does not exist"
Else
MsgBox "Table exists"
End If
rsSchema.Close
Set rsSchema = Nothing
'--------------------------------------
cnDB.Close
End Sub
答案 2 :(得分:1)
你最好检查相关表的存在,而不是试图放弃它。
SQL语法依赖于您正在使用的数据库服务器/引擎,但对于Sql Server,您可以使用以下内容:
Sql Server 2000:
SELECT 1 as Exists FROM sysobjects WHERE name = 't1'
Sql Server 2005/2008:
SELECT 1 as Exists FROM sys.objects WHERE name = 't1'
然后您可以使用VB:
Dim rs as Recordset
Dim iExists as Integer
rs = cmd.Execute
On Error Goto DoesNotExist
rs.MoveFirst
iExists = CInt(rs!Exists)
DoesNotExist:
If iExists = 1 Then
' Put code here for if the table exists
Else
' Put code here for if the table does not exist
End If
注意:此代码需要整理并“生产”=)(即我实际上没有测试它是否有效,因为我在这台机器上没有VB6)