Como les habia comentado, no me gusta pasar mucho tiempo buscando como hacer algo que deberia ser sencillo. Esta vez me tocaba buscar como hacer para saber si existe o no una tabla en SQL Server 2005 desde VB.NET 2008.
Estuve buscando durante aproximadamente 3 horas, viendo como conectarse con la libreria ADO, ejecutar la cadena de SQL con el metodo executeNonQuery, capturar el resultado de este con un listener y un monton de cosas, y al final escogi irme por un camino mas sencillo: SQL Server debia de almacenar los datos de las tablas que existian en algun lugar y yo sabia el nombre exacto de la tabla que queria buscar; sabia el nombre del esquema, del catalogo y el nombre de la tabla, asi que todo lo que tenia que hacer era una consulta a ese lugar donde SQL Server almacena el nombre de las tablas, y pues resulta que la consulta era tan sencilla como esto:
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_CATALOG = 'myCatalog' AND
TABLE_SCHEMA = 'mySchema' AND
TABLE_NAME = 'myTable';
Y listo, al final al pasar esto a codigo para saber si existia o no la tabla, todo quedo de esta forma:
Dim sqlString As String = "SELECT COUNT(1) FROM INFORMATION_SCHEMA.TABLES "
sqlString &= "WHERE TABLE_CATALOG = 'myCatalog' AND "
sqlString &= "TABLE_SCHEMA = 'mySchema' AND "
sqlString &= "TABLE_NAME = 'myTable'"
Dim objCommand As System.Data.SqlClient.SqlCommand = New System.Data.SqlClient.SqlCommand(sqlString, objConnection)
Dim exist As Integer = Integer.Parse(objCommand.ExecuteScalar().ToString())
If (exist = 1) Then
MsgBox("SI EXISTE!!!")
ElseIf (exist = 0) Then
MsgBox("NO EXISTE!!!")
End If
Espero que les sea de utilidad y que esto los pueda ayudar a solucionar sus problemas.
No hay comentarios:
Publicar un comentario