【问题标题】:Retrieving all rows from sqlce in a single fetch在一次提取中从 sqlce 检索所有行
【发布时间】:2011-11-05 20:27:52
【问题描述】:

我有一个 SQLCE 数据库的查询,例如

     select mobileNumber from customers where balance > 10000

到目前为止,我一直在循环 SqlCeResultSet 之类的

     while (resultSet.Read())
     {
         mobileNumberList.Add(resultSet.GetValue(0));
     } 

所以我想在一次获取中获取手机号码列表可能是一个列表。我怎么做?因为单次获取会更快,对吧?

更新
读完答案后我读到的几件事:
SqlDataReader vs SqlDataAdapter

【问题讨论】:

    标签: c# sql-server-ce resultset sqldatareader sqldataadapter


    【解决方案1】:

    我没有看到这里填充了数据集。不应该是ds.Fill(adp)apd.Fill(ds)吗?这不是用一个从未填充过的空DataSet 填充SqlCeDataAdapter,还是我完全糊涂了?

    SqlCeDataAdapter adp = new SqlCeDataAdapter("select mobileNumber from customers where balance > 10000");
    DataSet ds = new DataSet();
    adp.Fill(ds);
    

    【讨论】:

    • 首先我们在数据适配器(adp)中有查询结果,adp.Fill(ds)表示用数据适配器(adp)中的结果填充空数据集(ds)
    【解决方案2】:

    当前您正在使用 DataReader,它是一个只读、只转发“光标”滚动结果集,并且仅在连接到数据源时工作。

    如果您使用数据适配器和填充数据集更改您的 ExecuteReader,您将获得一个 DataSet/DataTable 对象,该对象将包含所有结果,并且在您关闭连接后仍可以断开连接。

    您要使用什么取决于您的实际用例和需求,通常 DataReader 比数据集更快,因此您可能已经在使用最快的可用方法。

    【讨论】:

    • +1 获取信息。如果我要一次使用所有数据,适配器会比数据读取器慢吗?
    【解决方案3】:

    您可以使用 SqlCeDataAdapter 在一次提取中使用查询返回的所有记录填充 DataSet。

    例如:

    SqlCeDataAdapter adp = new SqlCeDataAdapter("select mobileNumber from customers where balance > 10000");
    DataSet ds = new DataSet();
    adp.Fill(ds);
    

    【讨论】:

      猜你喜欢
      • 2014-11-16
      • 2018-06-18
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多