我一直在想这个,并不能真正找到一个直接的答案。在.NET中,当您使用SQL Server数据适配器从数据库中填充数据行时,它是否真正加载到内存中,然后在某些方面,当您访问它时,它是否还是从数据库中读取数据?
答案 0 :(得分:1)
填写DataTable后,您可以关闭连接。填充后不再需要访问数据库。 DataReader在使用时需要打开连接。
答案 1 :(得分:1)
是的,当适配器填充DataTable时,所有数据都从数据库读入内存并存储在DataTable中。不需要持久连接。显然,如果要刷新DataTable中的数据或保存对数据库的更改,则需要连接,但不需要保持连接打开以便使用DataTable中的数据。
答案 2 :(得分:1)
.NET DataSet
(并通过转移,DataTable
)是“存储在数据库中的数据的断开内存表示”,如果我完全记得我的教科书定义。
这个定义是不言自明的,但要澄清......一旦你在DataAdapter上调用Fill()
,它确实会将数据加载到内存中。在明确调用Update(), Delete() or Insert()
等其他方法之前,不需要再次访问数据库。
DataAdapter还隐式管理连接本身。如果数据库已关闭,它会在访问数据库之前打开连接,并在作业完成后自动关闭它。