SQLDataAdapter Fill方法如何触发数据库查询?

时间:2011-12-08 06:34:03

标签: asp.net sql sqldataadapter

我有一个查询来理解SQLDataAdapter填充方法,该方法接受如startRecord,MaxRecord之类的参数,如下所示 -

SqlDataAdapter adap = new SqlDataAdapter ("Select * from tblname",ConnectionString);
DataSet ds = new DataSet();
adap.Fill(ds, startIndex, MaxRecords , "TableName");

我想知道SqlDataAdapter会做什么。

它会首先触发查询,该查询会从表中返回整个记录,然后从中提取行吗?

它会在数据库中触发一个只选择所需行数的查询吗?

2 个答案:

答案 0 :(得分:0)

SqlDataAdapter充当DataSet和SQL Server的桥梁,用于检索和保存数据。 当SqlDataAdapter填充DataSet时,它将为返回的数据创建必要的表和列(如果它们尚不存在)。

这段代码可以让您更好地理解

string sqlStatement = "Select * from tblname ";
                SqlCommand cmd = new SqlCommand(sqlStatement, con);
                DataSet ds = new DataSet();

                SqlDataAdapter adap = new SqlDataAdapter(cmd);
                cmd.ExecuteNonQuery();
                adap.Fill(ds);

答案 1 :(得分:0)

sqlDataAdapter.Fill(dataSet, currentIndex, pageSize, "TableName");将查询整个结果集,然后将它们分页到内存中。

对于大型结果集,这不是您想要的。如果要在服务器上进行分页,请使用您使用的SQL中的SKIP和TOP子句。

Here是解释此问题的文档。