2010-01-10 100 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); 
     } 
    } 
相关问题