C#使用SqlDataReader的while循环

时间:2018-09-05 14:41:51

标签: c# sql-server while-loop sqldatareader

我正在尝试使用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>";

3 个答案:

答案 0 :(得分:3)

您缺少一组花括号来分隔while块和using块:

    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>";

如果您省略了诸如usingwhileif等代码块上的括号,则编译器只会将紧随其后的行视为该块的一部分。

答案 1 :(得分:0)

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>";

答案 2 :(得分:0)

使用foreach循环和DbDataRecord

string description = "placeholder";
string desc_mod;
query.InnerHtml += "<table class='list_format'>";   

using (var r = SQLHelper.ExecuteQuery(query1))
{
    foreach (DbDataRecord s in r)
    {
        description = (string)s["Description"];
        desc_mod = description.Substring(0, 30);
        query.InnerHtml += "<tr><td><div><p>" + desc_mod + "</p</div></td></tr>";
    }
}

query.InnerHtml += "</table>";