Determina se la tabella esiste in SQL Server CE?

So che questo è simile a questa domanda , ma sto usando SQL Server CE 3.5 con un progetto WinForms in C #. Come posso determinare se esiste un tavolo? So che la parola chiave IF non è supportata, anche se EXISTS è. Information_schema esiste in CE dove posso interrogare contro di esso? Grazie.

Sì, esiste:

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

In alternativa puoi interrogare la tabella e prendere l’eccezione lanciata. Se c’è un’eccezione, la tabella non è stata trovata, altrimenti esiste la tabella.

 SELECT TOP 1 1 FROM TableName; 

Un piccolo e semplice Performance Test ha ottenuto risultati migliori rispetto alla query su INFORMATION_SCHEMA. Anche se considererei una query contro INFORMATION_SCHEMA più pulita.

Utilizzando l’helper del database:

 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 }