如何检查表是否存在?如何检查表是否存在
使用VB 6.0
cmd.CommandText = "drop table t1"
cmd.Execute
上面的代码工作正常,但如果表不存在,那么显示“表不退出”
如何检查表中存在或表不存在?
需要VB CODE帮助吗?
如何检查表是否存在?如何检查表是否存在
使用VB 6.0
cmd.CommandText = "drop table t1"
cmd.Execute
上面的代码工作正常,但如果表不存在,那么显示“表不退出”
如何检查表中存在或表不存在?
需要VB CODE帮助吗?
对于一个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
如果您只想删除表而不抛出错误消息,则可以使用以下SQL(如果使用的是MySQL)。
DROP TABLE t1 IF EXISTS
其他数据库有类似的功能,但语法不同。在MSSQL中做同样的事情:
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1') DROP TABLE t1;
虽然这看起来非常丑陋..必须有更好的语法才能得到相同的结果。
我忘记了关于INFORMATION_SCHEMA - 我似乎总是忘记它存在 - 尽管似乎花了我的Sql大部分时间用了最近的MySql!好决定 :) – Rob 2009-06-30 08:13:38
你最好检查有关表格的存在,而不是试图放弃它。
的SQL语法是依赖于你正在使用的数据库服务器/引擎,但是对于SQL Server,你可以使用类似:
的SQL Server 2000:
SELECT 1 as Exists FROM sysobjects WHERE name = 't1'
SQL服务器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)
我看到你是新的,并且注意到你没有用答案标记你的任何问题。不要忘了这样做,因为它不仅可以获得回答者的声望(点数),还可以将其标记为可能搜索相同答案的其他人的答案。 :) – Dusty 2009-06-30 20:15:50