2008-08-19 94 views
9

創建數據庫表是否有可能(在2005年Vb.Net),而無需手動分析數據集表格屬性,創建表,並將其添加到數據庫?從數據集表

我們在某些機器上有舊版本的程序,顯然有我們的舊數據庫,而且我們正在尋找一種方法來檢測是否存在缺少的表,然後根據表的當前狀態生成表在數據集中。每當我們發佈新版本(如果添加新列),我們都在重新編寫表格腳本,但如果可能的話,我們希望避免這一步驟。

+0

Yaakov Ellis鏈接現在已損壞,它已更改爲[this](http://social.msdn.microsoft.com/Forums/zh-CN/adodotnetdataproviders/thread/4929a0a8-0137-45f6-86e8-d11e220048c3/ )。 – 2011-07-21 14:45:43

回答

7

看到這個MSDN論壇帖子:Creating a new Table in SQL Server from ADO.net DataTable

這裏海報似乎試圖做同樣的事情,你,並提供了利用包含在一個DataTable的架構CREATE TABLE語句代碼。

假設這個作品,因爲它應該,然後你可以採取的代碼,並通過SqlCommand.ExecuteNonQuery()以創建表提交到數據庫。

1

下面是代碼

SqlConnection con = new SqlConnection("Data Source=.;uid=sa;pwd=sa123;database=Example1"); 
     con.Open(); 
     string sql = "Create Table abcd ("; 
     foreach (DataColumn column in dt.Columns) 
     { 
      sql += "[" + column.ColumnName + "] " + "nvarchar(50)" + ","; 
     } 
     sql = sql.TrimEnd(new char[] { ',' }) + ")"; 
     SqlCommand cmd = new SqlCommand(sql, con); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     cmd.ExecuteNonQuery(); 
     using (var adapter = new SqlDataAdapter("SELECT * FROM abcd", con)) 
     using(var builder = new SqlCommandBuilder(adapter)) 
     { 
      adapter.InsertCommand = builder.GetInsertCommand(); 
      adapter.Update(dt); 
     } 
     con.Close(); 

希望你有解決了這個問題。 這裏dt是數據表的名稱。 或者U可以與

adapter.Update(ds.Tables[0]); \\if u have a dataset 

請投我的答案,如果你認爲我已經爲您提供了一個答案替換

adapter.update(dt);