2012-10-22 63 views
1

我正在連接到SQL Server 2008數據庫。如何使用C#克隆現有表模式以創建具有相同結構的新空表?

使用C#,我想創建一個新的表,具有由我指定的名稱,它看起來就像該數據庫中的現有表。沒有外鍵參與。

我有一個像

DataTable table = con.GetSchema("Tables"); 
foreach (System.Data.DataRow row in table.Rows) 
{ 
    foreach (System.Data.DataColumn col in table.Columns) 

代碼,但它不會讓我很遠。我真的需要自己遍歷所有表嗎?即使我確定DataTable如何克隆它?我看着DataTable.Clone,但我看不到如何設置一個新名稱並在數據庫上創建該表。

+0

向我們展示你有什麼到目前爲止 –

+0

沒有什麼,編譯!我一直在通過MSDN文檔瞭解最近一小時,嘗試類似上面粘貼的代碼... – Ben

回答

1

SMO(Server Management Objects)具有很多表腳本功能。我會從那裏開始。

article可能會幫助你開始。

如果你想避免SMO,你可以通過一個SqlDataReader做到這一點,如下(或東西接近這個):

using (SqlConnection cnn = new SqlConnection(connectionString)) 
{ 
    using (SqlCommand cmd = cnn.CreateCommand()) 
    { 
     cmd.CommandText = "Execute some SQL Select here. Doesn't matter what. We just need a reference to the table."; 
     cmd.CommandType = CommandType.Text; 
     cnn.Open(); 
     using (SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.KeyInfo)) 
     { 
      schema = rdr.GetSchemaTable(); 
     } 
    cnn.Close(); 
    } 
} 
+0

有沒有辦法避免SMO?我試圖避免依賴關係,因爲我的應用程序是新用戶運行的第一件事情之一。我似乎記得SMO需要通過SQL Server MSI安裝? – Ben

+0

@Ben - 我已經更新了我的答案,以包含一些代碼,它們應該允許您讀取目標表模式。然後您應該能夠基於此創建一個新表。 –

相關問題