我有一个SQLCE数据库的查询,如
select mobileNumber from customers where balance > 10000
直到现在,我正在循环遍历SqlCeResultSet,如
while (resultSet.Read())
{
mobileNumberList.Add(resultSet.GetValue(0));
}
所以我想在一次获取中获取手机号码列表可以作为列表。我怎么做?因为单次获取会更快,对吧?
更新
阅读答案后我读到的东西很少:
SqlDataReader vs SqlDataAdapter
答案 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);