2009-01-10 68 views
16

我知道这与this question类似,但我在C#中使用SQL Server CE 3.5与WinForms项目。我怎样才能确定一个表是否存在?我知道IF关键字不受支持,但EXISTS是。 information_schema是否存在于CE中,我可以查询它?谢谢。确定SQL Server CE中是否存在表?

+0

我想我有一个漂亮的实现需要正是代码这一点,但它不是为我工作。我发布了一个问题 diesbezueglich at:http://social.msdn.microsoft.com/Forums/en-US/8ee6aefa-e47b-4f0c-8735-120b8bf041ec/why-is-my-sqlserver-ce-code-failing (我试图将它张贴在codeproject上,但它多次冻结我) – 2013-07-31 19:40:36

+0

第三次是一种魅力:http://www.codeproject.com/Questions/629607/Why-is-my-SQLServer-CE-code-失败 是的,我交叉发布,但到两个不同的论坛,所以希望这不被视为gauche。 – 2013-07-31 19:43:32

回答

34

是的,它确实存在:

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

不会“SELECT COUNT(ID)”变得更容易,性能更高一些(如果表格很宽(很多列)或高(很多行)? – 2013-07-31 18:27:51

1

正如你可以查询表,赶上抛出的异常的替代品。 如果有例外,表未找到,否则表存在。

SELECT TOP 1 1 FROM TableName; 

有点简单的性能测试比查询对INFORMATION_SCHEMA有更好的结果。尽管我会将对INFORMATION_SCHEMA的查询视为更清晰。

0

使用数据库助手:

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 
}