1

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

     select mobileNumber from customers where balance > 10000

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

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

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

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

4

3 回答 3

1

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

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

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

于 2011-08-29T08:12:38.780 回答
0

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

例如:

SqlCeDataAdapter adp = new SqlCeDataAdapter("select mobileNumber from customers where balance > 10000");
DataSet ds = new DataSet();
adp.Fill(ds);
于 2011-08-29T08:10:50.323 回答
0

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

SqlCeDataAdapter adp = new SqlCeDataAdapter("select mobileNumber from customers where balance > 10000");
DataSet ds = new DataSet();
adp.Fill(ds);
于 2012-05-17T11:35:07.043 回答