Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

detectar si una tabla existe

3 views
Skip to first unread message

javito

unread,
Dec 1, 2009, 9:16:26 AM12/1/09
to
quiero hacer una aplicaci�n que detecte la existencia de una tabla en el
origen de datos, y si no existe la crea con DDL, pero que orden le puedo dar
al origen da datos para saber si existe o no.

un saludo


Alberto Poblacion

unread,
Dec 1, 2009, 10:01:38 AM12/1/09
to
"javito" <fjjc...@mi.madritel.es> wrote in message
news:OeThfDpc...@TK2MSFTNGP06.phx.gbl...

�El origen de datos es alguno en concreto? Por ejemplo, si es sql
server, puedes saber si una tabla existe mediante el correspondiente "Select
... from sys.objects where...".

Si quieres un mecanismo universal, puedes emplear OleDb para ejecutar el
m�todo GetOleDbSchemaTable del OleDbConnection, que con los par�metros
adecuados te permite saber qu� tablas existen (y por lo tanto determinar si
la que t� quieres existe).

javito

unread,
Dec 1, 2009, 10:58:19 AM12/1/09
to
Alberto es Sql Server 2005, y conozco la sentencia pero mi duda es, que tipo
de consulta le debo hacer � una ExecuteScalar ? y que devuelve la sentencia
o simplemente la recojo como objeto con el Scalar y compruebo si el objeto
es nulo.

un saludo


"Alberto Poblacion" <earthling-quitae...@poblacion.org>
escribi� en el mensaje news:Ox5b4cpc...@TK2MSFTNGP02.phx.gbl...

Alberto Poblacion

unread,
Dec 1, 2009, 5:22:24 PM12/1/09
to
"javito" <fjjc...@mi.madritel.es> wrote in message
news:%23XIVg8p...@TK2MSFTNGP06.phx.gbl...

> Alberto es Sql Server 2005, y conozco la sentencia pero mi duda es, que
> tipo de consulta le debo hacer � una ExecuteScalar ? y que devuelve la
> sentencia o simplemente la recojo como objeto con el Scalar y compruebo si
> el objeto es nulo.

Bueno, si usas una sentencia como esta:

SELECT COUNT(*) FROM sys.objects WHERE object_id = OBJECT_ID(N'MiTabla') AND
type in (N'U')

entonces puedes ejecutarla con un ExecuteScalar, y te devolver� 1 si la
tabla existe o 0 si no existe.

Otra alternativa: dices que lo que quieres es detectar si existe, y si no
existe, crearla con DDL. En este caso, lo puedes hacer todo de golpe en una
sola sentencia, que puedes lanzar con un ExecuteNonQuery:

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'MiTabla') AND type in (N'U')) CREATE TABLE MiTabla (....)


Javito

unread,
Dec 1, 2009, 5:47:42 PM12/1/09
to
Gracias Alberto lo voy a probar
"Alberto Poblacion" <earthling-quitae...@poblacion.org>
escribi� en el mensaje news:uzddNTtc...@TK2MSFTNGP02.phx.gbl...

Javito

unread,
Dec 1, 2009, 8:11:04 PM12/1/09
to
Gracias Alberto funciona muy bien

un saludo
"Alberto Poblacion" <earthling-quitae...@poblacion.org>
escribi� en el mensaje news:uzddNTtc...@TK2MSFTNGP02.phx.gbl...
0 new messages