2009-06-30 17 views
5

Jak sprawdzić tabelę, czy istnieje?Jak sprawdzić tabelę istnieje lub nie istnieje

Korzystanie VB 6,0

cmd.CommandText = "drop table t1" 
cmd.Execute 

Powyższy kod działa poprawnie, ale jeśli tabela nie istnieje to pokazuje „tabela nie wyjść”

Jak sprawdzić tabelę istnieje lub tabela nie istnieje?

Potrzebujesz pomocy VB CODE?

+0

Widzę, że jesteś nowy i zauważyłeś, że nie zaznaczyłeś żadnego z pytań z odpowiedzią. Nie zapomnij tego zrobić, ponieważ nie tylko otrzymuje reputację referenta (punkty), ale także oznacza to jako odpowiedź dla innych, którzy mogą szukać tej samej odpowiedzi. :) – Dusty

Odpowiedz

2

Dla Jet MDB (a może ogólnie dla wielu dostawców OLEDB) można użyć podejście jak:

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 
4

Jeśli chcesz upuścić tabelę bez wyświetlania komunikatu o błędzie, możesz użyć następującego kodu SQL, jeśli używasz MySQL.

DROP TABLE t1 IF EXISTS 

Inne bazy danych mają podobną funkcję, ale ich składnia jest inna. Aby zrobić to samo w MSSQL:

IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1') DROP TABLE t1; 

Chociaż wygląda to bardzo brzydko ... musi istnieć lepsza składnia, aby uzyskać ten sam wynik.

+0

Zapomniałem o INFORMATION_SCHEMA - zawsze zapominam o tym, że istnieje - mimo, że wydaje mi się, że większość czasu spędzam z wykorzystaniem MySql! Dobra decyzja :) – Rob

1

Lepiej sprawdzać, czy dany stół jest obecny, niż próbować go upuścić.

Składnia SQL jest zależny od bazy danych serwera/silnika, którego używasz, ale dla SQL Server można użyć coś takiego:

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' 

następnie można użyć VB jak:

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 

Uwaga: Ten kod wymaga uporządkowania i "productionising" =) (tj. I rzeczywiście nie testowane, że działa jak nie mam VB6 na tym komputerze)

Powiązane problemy