2009-07-29 34 views

回答

3
using(SqlConnection connection = 
    new SqlConnection(connectionString)) 
{ 
connection.Open(); 
DataTable dt = connection.GetSchema(); 
connection.Close(); 
} 

看到here

+0

以下是GetSchema上的MSDN文檔 - http://msdn.microsoft.com/en-us/library/ms254934.aspx – RichardOD 2009-07-29 07:53:23

0

使用INFORMATION_SCHEMA

選擇a.table_name 從INFORMATION_SCHEMA.TABLES一個在表格名LIKE'

5

此查詢應該給你答案:

select count(id) from sysobjects where name = 'thetable' and type = 'U' 

如果計數是1表存在,如果它是0它不。

裹成一個方法:

private bool TableExists(string tableName) 
{ 
    using (SqlConnection conn = new SqlConnection(GetConnectionString())) 
    { 
     using (SqlCommand cmd = new SqlCommand("select count(id) from sysobjects where name = @tableName and type = 'U'", conn)) 
     { 
      cmd.Parameters.AddWithValue("@tableName", tableName); 
      conn.Open(); 
      int count = (int)cmd.ExecuteScalar(); 
      conn.Close(); 
      return count == 1; 
     } 
    } 
} 
1

對於支持它(至少2005年和2008年),你可以寫INFORMATION_SCHEMA查詢新的SQL Server版本。例如。如果存在用戶表,則以下查詢(對針對您的特定應用程序數據庫運行而不是master)將返回一行。

SELECT * FROM information_schema.tables 
WHERE TABLE_NAME = 'Users' 
AND TABLE_TYPE = 'BASE TABLE' -- could be 'VIEW' 

或只是在你的數據庫返回所有的表名是這樣的:

SELECT TABLE_NAME FROM information_schema.tables 
WHERE TABLE_TYPE = 'BASE TABLE' -- could be 'VIEW' 

我相信你已經有了C#ADO代碼運行查詢(或者你可以在上述轉變進入存儲過程)。您可以收集大量其他有用信息,而無需擔心所有參數/列/類型的神祕信息sysobjects

0

您需要的是查詢SQLServer數據庫中的sysobject表,以查找數據庫中特定表/對象的存在。

SELECT 1 AS Exists FROM dbo.sysobject where name = @tableName AND xtype = 'U' 

打開SQLConnection並將此查詢包裝在SqlCommand對象中並執行它。

相關問題