2009-01-10 12 views
16

Tôi biết điều này tương tự như this question, nhưng tôi đang sử dụng SQL Server CE 3.5 với dự án WinForms trong C#. Làm thế nào tôi có thể xác định liệu một bảng tồn tại? Tôi biết từ khóa IF không được hỗ trợ, mặc dù EXISTS là. Information_schema có tồn tại ở CE nơi tôi có thể truy vấn nó không? Cảm ơn.Xác định xem bảng có tồn tại trong SQL Server CE không?

+0

tôi nghĩ rằng tôi đã có một triển khai tiện lợi của chỉ là những gì mã đã cần thiết cho điều này, nhưng nó không làm việc cho tôi. Tôi đã đăng câu hỏi diesbezueglich tại: http://social.msdn.microsoft.com/Forums/en-US/8ee6aefa-e47b-4f0c-8735-120b8bf041ec/why-is-my-sqlserver-ce-code-failing (Tôi đã cố gắng để đăng nó trên codeproject, nhưng nó đóng băng trên tôi nhiều lần) –

+0

Lần thứ ba là một nét duyên dáng: http://www.codeproject.com/Questions/629607/Why-is-my-SQLServer-CE-code- thất bại Có, tôi đã đăng chéo, nhưng với hai diễn đàn khác nhau, vì vậy hy vọng rằng nó không được coi là gauche. –

Trả lời

34

Vâng, nó không tồn tại:

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

Sẽ không "SELECT COUNT (ID)" được dễ dàng hơn và một chút performant hơn (trong trường hợp bảng rộng (nhiều cột) hoặc cao (nhiều hàng)? –

+0

Nó thực sự phụ thuộc vào cách bạn muốn mã xung quanh nó. bạn chỉ muốn kiểm tra sự tồn tại, sau đó yeah Tôi chỉ muốn chứng minh rằng INFORMATION_SCHEMA.TABLES có sẵn có thể được truy vấn.Các phần còn lại là SQL cơ bản –

+0

@MehrdadAfshari Go Persians !! –

1

Là một thay thế, bạn có thể truy vấn bảng và bắt ngoại lệ ném. Nếu có Ngoại lệ, Bảng không được tìm thấy, nếu không Bảng sẽ tồn tại.

SELECT TOP 1 1 FROM TableName; 

Kiểm tra hiệu suất nhỏ và đơn giản có kết quả tốt hơn so với truy vấn đối với INFORMATION_SCHEMA. Mặc dù tôi sẽ xem xét một truy vấn chống lại INFORMATION_SCHEMA như là sạch hơn.

+0

Nếu bảng không tồn tại, phương thức đó sẽ ném một ngoại lệ, vì vậy bạn không nên làm điều đó - bắt một ngoại lệ không bao giờ là con đường để đi khi có một thay thế sạch sẽ. –

0

Sử dụng cơ sở dữ liệu helper:

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 
}