2009-06-30 16 views
5

¿Cómo verificar la tabla está allí o no?Cómo verificar la existencia o no de tabla

utiliza VB 6,0

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

Por encima de código funciona bien, pero si no es existir tabla a continuación se muestra la “tabla no sale”

¿Cómo comprobar la tabla existe o no existe mesa?

Necesita VB CODE ayuda?

+0

Veo que usted es nuevo y notó que no marcó ninguna de sus preguntas con una respuesta. No olvide hacer esto porque no solo obtiene la reputación del que responde (puntos), sino que también lo marca como la respuesta para otros que podrían estar buscando la misma respuesta. :) – Dusty

Respuesta

2

Para un Jet MDB (y tal vez de forma genérica para muchos proveedores OLEDB) se puede utilizar un enfoque como:

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

Si solo quiere dejar caer la tabla sin lanzar un mensaje de error, puede usar el siguiente SQL si está utilizando MySQL.

DROP TABLE t1 IF EXISTS 

Otras bases de datos tienen una función similar, pero la sintaxis es diferente. Para hacer lo mismo en MSSQL:

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

A pesar de que se ve muy feo .. tiene que haber una mejor sintaxis para obtener el mismo resultado.

+0

Me olvidé de INFORMATION_SCHEMA - Siempre me olvido que existe, ¡a pesar de que parezco haber gastado la mayor parte de mi tiempo Sql usando MySql últimamente! Buena llamada :) – Rob

1

Será mejor que compruebe la existencia de la tabla en cuestión, en lugar de tratar de soltarla.

La sintaxis SQL depende del servidor/base de datos del motor que está usando, pero para SQL Server que podría utilizar algo como:

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' 

entonces usted puede utilizar como 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 

Nota: Este código debe ser ordenado y "productivo" =) (es decir En realidad no he probado que funciona como no tengo VB6 en esta máquina)

Cuestiones relacionadas