在单个提取中从sqlce检索所有行

时间:2011-08-29 07:58:48

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

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

     select mobileNumber from customers where balance > 10000

直到现在,我正在循环遍历SqlCeResultSet,如

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

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

更新
阅读答案后我读到的东西很少:
SqlDataReader vs SqlDataAdapter

3 个答案:

答案 0 :(得分:1)

目前您正在使用DataReader,这是一个只读,仅向前“光标”滚动结果集,仅在连接到数据源时有效。

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

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

答案 1 :(得分:0)

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

e.g:

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

答案 2 :(得分: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);