我正在使用GridView并想知道我是否更好地在
之后立即关闭连接adapter.Fill(ds);
声明或我应该等到我完成:
GridView.DataSource = ds;
GridView.DataBind();
我假设一旦填充了数据集,我就不再需要连接了。我错了吗?
答案 0 :(得分:4)
当您调用adapter.Fill(ds);
时,数据会加载到内存中,您可以在此语句后立即关闭连接。之后,当您将ds作为DataSource设置为gridview时,它将绑定内存中的数据。
查看本文以了解Working with Disconnected Data - The DataSet and SqlDataAdapter
答案 1 :(得分:3)
致电Fill()
后,您可以安全地关闭连接。 Offtopic:在处理IDisposable
(例如SqlConnection
)实体时,使用using
块进行操作,因此,在这种情况下,您不必手动调用Close()
。
答案 2 :(得分:1)
SqlDataAdapter
后, connection
不需要DataSet
,但如果您在该行之后正在执行任何data manipulation
,则需要再次打开它,我这样做是在finally
块中写下所有这些语句。
答案 3 :(得分:-1)
由于SqlConnection
架构已断开连接,因此无需打开DataSet
。
DataSet是主要的数据存储 ADO.NET中的工具已断开连接 建筑。与DataReader不同, DataSet未直接连接 通过Connection连接到数据库 对象填充时。代替, 从数据库中填充DataSet 首先创建一个DataAdapter对象 (例如SqlDataAdapter)用于 提供者并将其与a关联 SqlConnection对象。那么 SqlDataAdapter可以代理数据 通过发出一个来检索DataSet 对数据库的SqlCommand 通过SqlConnection,检索 数据,并填充DataSet
一个非常基本的使用示例是
string sSQL = "SELECT * FROM Products";
string sConnString =
"Server=(local);Database=Northwind;Integrated Security=SSPI;";
SqlDataAdapter oDa = new SqlDataAdapter();
DataSet oDs = new DataSet();
using(SqlConnection oCn = new SqlConnection(sConnString))
{
SqlCommand oSelCmd = new SqlCommand(sSQL, oCn);
oSelCmd.CommandType = CommandType.Text;
oDa.SelectCommand = oSelCmd;
oDa.Fill(oDs, "Products");
}