代码之家  ›  专栏  ›  技术社区  ›  GurdeepS

如何将sql server db加载到数据集中?

c#
  •  2
  • GurdeepS  · 技术社区  · 15 年前

    我想将我拥有的整个数据库(sql server)加载到一个数据集中,以便可以处理多个表及其关系。我知道这可能会让人不快,但我该怎么做(我将使用datarelation和table对象)?

    谢谢

    4 回复  |  直到 15 年前
        1
  •  1
  •   Joel Mansford    15 年前

    除非我遗漏了一些东西,否则这应该只是一个简单的例子:生成一个数据集,然后更改填充方法以删除where部分。然后确保以正确的顺序调用填充(master,然后detail),以确保保持引用完整性。

        2
  •  1
  •   Hogan    15 年前

    你可以运行这个…但不要指望之后会有一个数据库或应用服务器。

    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);
            }
        }
    
        3
  •  0
  •   Dani    15 年前
    1. 读一些关于内存数据库的文章。

    2. @randolph potter idea是一个选项-您可以从服务器获取表列表,然后在列表上迭代并加载所有表。我想你对FK和关系也可以这么做。

    3. 您可能可以使用设计器自动完成这项工作—使用从服务器资源管理器拖放到数据集(VS2008)的方式,只需少量代码就可以将整个内容加载到内存中。

        4
  •  0
  •   Richard Reddy    15 年前

    我想您可以在一个存储过程中进行多个选择,然后填充一个数据集。

    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);
            }
        }
    

    我同意这里的其他评论,除非你的数据库很小,否则这是一个非常糟糕的主意。