c# - 您可以多次使用 sqlDataReader 吗?
问题描述
我有一个问题,我想我已经知道答案了;您可以多次使用 sqlDataReader 吗?
我有一个运行的查询,它的输出当前绑定到一个中继器。我得到了预期的结果,一切都运行良好。我现在面临的挑战是我想使用相同的结果,但不是将它们列出在中继器中,而是希望将它们加载到 DropDownList 中。我已经尝试“连续”两次使用 sqlDataReader,但我猜一旦 Reader 到达终点,就没有什么可以填充 DDL 了吗?
这是不起作用的代码。
sqlCmd = new SqlCommand("SELECT CountryName From CountryList");
sqlCmd.CommandType = System.Data.CommandType.Text;
sqlCmd.Connection = myConnection;
sqlReader = sqlCmd.ExecuteReader();
if (sqlReader.HasRows)
{
RepeaterCountries.DataSource = sqlReader;
RepeaterCountries.DataBind();
DDLCountry.DataSource = sqlReader;
DDLCountry.DataTextField = "CountryName";
DDLCountry.DataValueField = "CountryName";
DDLCountry.DataBind();
}
有没有一种方法可以实现这一点,我不必再次对数据库运行另一个查询?关于将结果放入数组或类似的东西是否可行的任何建议?
解决方案
你不能。
数据阅读器是 TDS 协议的一个小包装器,它是从服务器发送的仅转发数据集。
数据读取器不保留数据的副本,并且sql server不允许重置数据集(这也是不记得了),所以你不能只是在数据中移动回来。
您要么必须在内部缓冲,要么必须再次发送 sql。
推荐阅读
- linux - 如何更改特定组或用户的“ChallengeResponseAuthentication”值
- javascript - 如何使用 React 实现带有哈希路由的 Scrollspy
- javascript - 遍历宇宙中的*所有* npm 包
- angular - 将对象的更改通知给父角度
- email - 获取退回邮件 Odoo 票务
- python - 如何获取两个元组列表中存在的不常见元组列表
- html - CSS - 需要用不同的动画制作两个形状。无法更改 HTML
- javascript - 在 Java Script 中将 Roman 转换为 Integer
- javascript - 如何根据 Json 数组对象检查条件设置默认单选按钮
- c++ - 有没有办法在 Linux 上使用 Xlib 创建一个始终位于顶部的窗口?