我想将整个数据库(SQL Server)加载到数据集中,以便可以处理多个表及其关系。我知道这可能会皱眉,但我怎么能做到这一点(我将使用DataRelation和Table对象)?如何将SQL Server数据库加载到数据集中?
感谢
我想将整个数据库(SQL Server)加载到数据集中,以便可以处理多个表及其关系。我知道这可能会皱眉,但我怎么能做到这一点(我将使用DataRelation和Table对象)?如何将SQL Server数据库加载到数据集中?
感谢
阅读关于内存数据库的一些文章。
@ Randolph Potter的想法是一个选项 - 您可以从服务器获取表的列表,然后遍历列表并加载所有表。我想你可以对FK和关系做同样的事情。
您可以使用设计器自动执行此操作 - 使用从服务器资源管理器拖放到数据集(VS2008),并用一些代码将整个内容加载到内存中。
我问这个问题来自于看看这个问题:http://www.knowdotnet.com/articles/datarelation.html我想我可以迭代表,然后加载/使用它们。 DataTable的名称与db中的表相同,一旦我连接,应该是该表的实例。 – dotnetdev 2010-01-10 16:29:53
另外,如果我要使用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
除非我遗漏了一些东西,这应该只是一个简单的例子,生成一个数据集,然后改变Fill方法来删除WHERE部分。然后确保您以正确的顺序(主,然后详细)调用填充以确保您保持参照完整性。
任何如何做到这一点的例子? – dotnetdev 2010-01-16 19:00:21
我想你可以在单个存储过程中做多个选择然后填充一个数据集。
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);
}
}
我同意这里的其他评论,除非你的数据库很小,这是一个非常糟糕的主意。
你可以运行这个...但不要指望有一个数据库或应用服务器之后。
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);
}
}
为什么要这么做? :P – 2010-01-10 16:02:34
不知道为什么你想这样做,但我会遍历表的列表并填充DataTable的内容。我也希望你先用尽内存。 – 2010-01-10 16:09:10
运行并隐藏在岩石下。 – Hogan 2010-01-13 22:17:18