【问题标题】:How SQLDataAdapter Fill method fires Database Queries?SQLDataAdapter Fill 方法如何触发数据库查询?
【发布时间】:2011-12-08 06:34:02
【问题描述】:

我有一个关于 SQLDataAdapter 填充方法的查询,该方法采用 startRecord、MaxRecord 等参数,如下所示 -

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

我想知道 SqlDataAdapter 会做什么。

它会首先触发从表中带回整个记录的查询,然后从表中过滤行吗?

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

【问题讨论】:

    标签: asp.net sql sqldataadapter


    【解决方案1】:

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

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

    Here 是解释这一点的文档。

    【讨论】:

      【解决方案2】:

      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);
      

      【讨论】:

      • 那么,sqladapter 将触发什么查询?
      • sqladapter 是一组用于填充数据集的命令和连接...
      • 那么,sqladapter 将触发什么查询?它会触发会带来整行数据的查询,还是会触发只会获取选定行的查询?
      • 它将基于 sqlstatement 进行数据集。例如,如果您的 sqlstatement 返回 10 行,那么 sqladapter 将填充数据集中的 10 行。
      • 好的,如果我的选择查询返回 1000 行,并且如果我在查询中放置了一个过滤器(使用 SqlAdpater 填充方法),限制和偏移量,比如说假设 10 行。那将是什么查询会被解雇吗?
      猜你喜欢
      • 2014-01-21
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 2020-03-06
      • 2011-04-29
      • 2020-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多