ASP.NET:在适配器填充数据集后,应该立即关闭连接吗?

时间:2011-06-12 04:11:23

标签: c# .net asp.net gridview adapter

我正在使用GridView并想知道我是否更好地在

之后立即关闭连接
adapter.Fill(ds);

声明或我应该等到我完成:

GridView.DataSource = ds;
GridView.DataBind();

我假设一旦填充了数据集,我就不再需要连接了。我错了吗?

4 个答案:

答案 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");
}

来源:Contrasting the ADO.NET DataReader and DataSet