确定SQL Server CE中是否存在表?

我知道这与这个问题类似,但我在C#中使用SQL Server CE 3.5和WinForms项目。 如何确定表是否存在? 我知道虽然EXISTS是,但不支持IF关键字。 information_schema是否存在于我可以查询它的CE中? 谢谢。

是的,确实存在:

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

作为替代方案,您可以查询表并捕获抛出的exception。 如果存在exception,则找不到表,否则表存在。

 SELECT TOP 1 1 FROM TableName; 

一个简单而简单的性能测试比针对INFORMATION_SCHEMA的查询具有更好的结果。 虽然我认为对INFORMATION_SCHEMA的查询更清晰。

使用数据库助手:

 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 }