【发布时间】:2019-02-10 18:16:05
【问题描述】:
我正在尝试使用 while 循环修改来自数据读取器的数据,以使用 innerHtml 将数据显示为网页上 HTML 表中的行。它适用于第一次迭代,但不会对其余数据再次迭代。
已检查数据读取器上是否存在所有数据,因此似乎与我的 while 循环代码有关
关于我做错了什么有什么建议吗?
string description = "placeholder";
string desc_mod;
query.InnerHtml += "<table class='list_format'>";
using (SqlDataReader productList = SQLHelper.ExecuteQuery(query1))
if (productList.HasRows)
{
while (productList.Read())
description = (string)productList["Description"];
desc_mod = description.Substring(0, 30);
query.InnerHtml += "<tr><td><div><p>" + desc_mod + "</p</div></td></tr>";
}
query.InnerHtml += "</table>";
【问题讨论】:
-
所以在调试器中运行它,单步执行while循环,看看发生了什么。
productList.Read()会不会意外返回false? (您可能需要添加一个变量来检查这一点,因为对Read的重复调用会改变状态)。InnerHtml在每次循环中会发生什么,等等。 -
把你的身体戴上大括号,看看有没有帮助?
-
如果这是您的实际代码,那么您的 while 循环仅执行
description = (string)productList["Description"];行。在 {} 中包装循环相关代码 -
正如你们所提到的那样,缺少大括号才是问题所在。谢谢!!
标签: c# sql-server while-loop sqldatareader