2010-01-10 88 views
2

我想將整個數據庫(SQL Server)加載到數據集中,以便可以處理多個表及其關係。我知道這可能會皺眉,但我怎麼能做到這一點(我將使用DataRelation和Table對象)?如何將SQL Server數據庫加載到數據集中?

感謝

+2

爲什麼要這麼做? :P – 2010-01-10 16:02:34

+1

不知道爲什麼你想這樣做,但我會遍歷表的列表並填充DataTable的內容。我也希望你先用盡內存。 – 2010-01-10 16:09:10

+0

運行並隱藏在岩石下。 – Hogan 2010-01-13 22:17:18

回答

0
  1. 閱讀關於內存數據庫的一些文章。

  2. @ Randolph Potter的想法是一個選項 - 您可以從服務器獲取表的列表,然後遍歷列表並加載所有表。我想你可以對FK和關係做同樣的事情。

  3. 您可以使用設計器自動執行此操作 - 使用從服務器資源管理器拖放到數據集(VS2008),並用一些代碼將整個內容加載到內存中。

+0

我問這個問題來自於看看這個問題:http://www.knowdotnet.com/articles/datarelation.html我想我可以迭代表,然後加載/使用它們。 DataTable的名稱與db中的表相同,一旦我連接,應該是該表的實例。 – dotnetdev 2010-01-10 16:29:53

+0

另外,如果我要使用2個或更多表格,我可以這樣做:http://www.eggheadcafe.com/community/aspnet/2/10110718/how-to-load-data-from-dat。 aspx,但對n個表運行該方法n次(在循環或其他)。 – dotnetdev 2010-01-10 16:35:13

1

除非我遺漏了一些東西,這應該只是一個簡單的例子,生成一個數據集,然後改變Fill方法來刪除WHERE部分。然後確保您以正確的順序(主,然後詳細)調用填充以確保您保持參照完整性。

+0

任何如何做到這一點的例子? – dotnetdev 2010-01-16 19:00:21

0

我想你可以在單個存儲過程中做多個選擇然後填充一個數據集。

using (SqlConnection conn = new SqlConnection("YourConnectionString")) 
    { 
     using (SqlDataAdapter command = new SqlDataAdapter("usp_YourStoredProcedure", conn)) 
     { 
      command.CommandType = CommandType.StoredProcedure; 
      conn.Open(); 

      DataSet ds = new DataSet(); 
      command.Fill(ds); 
     } 
    } 

我同意這裏的其他評論,除非你的數據庫很小,這是一個非常糟糕的主意。

0

你可以運行這個...但不要指望有一個數據庫或應用服務器之後。

using (SqlConnection conn = new SqlConnection("YourConnectionString")) 
    { 
     using (SqlCommand command = new SqlCommand("exec sp_msforeachtable 'select * FROM ?'", conn)) 
     { 
      conn.Open(); 

      DataSet ds = new DataSet(); 
      command.Fill(ds); 
     } 
    } 
相關問題