2009-01-10 4 views
16

Je sais que c'est similaire à this question, mais j'utilise SQL Server CE 3.5 avec un projet WinForms en C#. Comment puis-je déterminer si une table existe? Je sais que le mot-clé IF n'est pas pris en charge, bien que EXISTS l'est. Information_schema existe-t-il dans CE où je peux interroger? Merci.Déterminez si la table existe dans SQL Server CE?

+0

Je pensais avoir une mise en œuvre de nifty juste ce que le code était nécessaire pour cela, mais cela ne fonctionne pas pour moi. J'ai posté une question diesbezueglich à: http://social.msdn.microsoft.com/Forums/en-US/8ee6aefa-e47b-4f0c-8735-120b8bf041ec/why-is-my-sqlserver-ce-code-failing (J'ai essayé de le poster sur codeproject, mais il a gelé sur moi plusieurs fois) –

+0

La troisième fois était un charme: http://www.codeproject.com/Questions/629607/Why-is-my-SQLServer-CE-code- Échec Oui, j'ai posté, mais à deux forums différents, donc j'espère que ce n'est pas considéré comme gauche. –

Répondre

34

Oui, il existe:

SELECT * 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME = 'TableName' 
+0

Est-ce que "SELECT COUNT (ID)" ne serait pas plus facile et un peu plus performant (dans le cas où la table est large (beaucoup de colonnes) ou haute (plusieurs lignes)? –

+0

Cela dépend vraiment de la façon dont vous voulez le coder. vous voulez juste vérifier l'existence, alors oui, je voulais juste démontrer que INFORMATION_SCHEMA.TABLES est disponible peut être interrogé.Le reste est base SQL –

+0

@MehrdadAfshari Go Persians !! –

1

Comme alternative, vous pouvez interroger la table et attraper l'exception jetée. S'il existe une exception, la table n'a pas été trouvée, sinon la table existe. Un petit et simple test de performance a de meilleurs résultats que le Query par rapport à INFORMATION_SCHEMA. Bien que je considérerais une requête contre INFORMATION_SCHEMA comme nettoyeur.

+0

Si la table n'existe pas, cette méthode sera lancez une exception, donc vous ne devriez pas faire cela - attraper une exception n'est jamais le chemin à parcourir quand il y a une alternative propre. –

0

utilisant aide de la base de données:

var db = Database.Open("MyDatabase"); 
var sql = @"SELECT Count(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'MyTable'" 
var count = db.QueryValue(sql); 
if(count.Equals(1)){ 
    //table exists 
} 
Questions connexes