2009-01-10 64 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 
}