C#对SqlDataReader使用while循环
我试图使用while循环修改数据读取器中的数据,以使用innerHtml在网页上的HTML表中将数据显示为行。它在第一次迭代中运行良好,但在其余数据中不会再次迭代 我已经检查了数据读取器上的所有数据,因此似乎与我的while循环代码有关 关于我做错了什么有什么建议吗C#对SqlDataReader使用while循环,c#,sql-server,while-loop,sqldatareader,C#,Sql Server,While Loop,Sqldatareader,我试图使用while循环修改数据读取器中的数据,以使用innerHtml在网页上的HTML表中将数据显示为行。它在第一次迭代中运行良好,但在其余数据中不会再次迭代 我已经检查了数据读取器上的所有数据,因此似乎与我的while循环代码有关 关于我做错了什么有什么建议吗 string description = "placeholder"; string desc_mod; query.InnerHtml += "<table class='list_format'>"; 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>";
string description=“占位符”;
字符串描述模块;
query.InnerHtml+=“”;
使用(SqlDataReader productList=SQLHelper.ExecuteQuery(query1))
if(productList.HasRows)
{
while(productList.Read())
description=(字符串)productList[“description”];
desc_mod=description.子字符串(0,30);
query.InnerHtml+=“”+desc_mod+”您缺少一组花括号来分隔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>";
string description=“占位符”;
字符串描述模块;
query.InnerHtml+=“”;
使用(SqlDataReader productList=SQLHelper.ExecuteQuery(query1)){
if(productList.HasRows){
{
while(productList.Read()){
description=(字符串)productList[“description”];
desc_mod=description.子字符串(0,30);
query.InnerHtml+=“”+desc_mod+”您缺少一组花括号来分隔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>";
string description=“占位符”;
字符串描述模块;
query.InnerHtml+=“”;
使用(SqlDataReader productList=SQLHelper.ExecuteQuery(query1)){
if(productList.HasRows){
{
while(productList.Read()){
description=(字符串)productList[“description”];
desc_mod=description.子字符串(0,30);
query.InnerHtml+=“”+desc_mod+”缺少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>";
string description=“占位符”;
字符串描述模块;
query.InnerHtml+=“”;
使用(SqlDataReader productList=SQLHelper.ExecuteQuery(query1))
if(productList.HasRows){
{
while(productList.Read())
{
description=(字符串)productList[“description”];
desc_mod=description.子字符串(0,30);
query.InnerHtml+=“”+desc_mod+”缺少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>";
string description=“占位符”;
字符串描述模块;
query.InnerHtml+=“”;
使用(SqlDataReader productList=SQLHelper.ExecuteQuery(query1))
if(productList.HasRows){
{
while(productList.Read())
{
description=(字符串)productList[“description”];
desc_mod=description.子字符串(0,30);
query.InnerHtml+=“”+desc_mod+”使用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>";
string description=“占位符”;
字符串描述模块;
query.InnerHtml+=“”;
使用(var r=SQLHelper.ExecuteQuery(query1))
{
foreach(r中的DbDataRecord)
{
description=(字符串)s[“description”];
desc_mod=description.子字符串(0,30);
query.InnerHtml+=“”+desc_mod+”使用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>";
string description=“占位符”;
字符串描述模块;
query.InnerHtml+=“”;
使用(var r=SQLHelper.ExecuteQuery(query1))
{
foreach(r中的DbDataRecord)
{
description=(字符串)s[“description”];
desc_mod=description.子字符串(0,30);
query.InnerHtml+=“”+desc_mod+”因此在调试器中运行它,单步执行while循环并查看发生了什么。是否productList.Read()
意外返回false
?(由于重复调用Read
更改状态,您可能需要添加一个变量来检查此情况)。每次通过循环时,InnerHtml
会发生什么情况等。将while主体放在大括号中,看看这是否有帮助?如果这是您的实际代码,则while循环只执行description=(string)productList[“description”];
line。将循环相关代码包装在{}正如大家提到的,缺少while大括号才是问题所在。谢谢!!所以在调试器中运行它,单步执行while循环,看看发生了什么。是否productList.Read()
意外返回false
?(您可能需要添加一个变量来检查这一点,因为重复调用Read
更改状态)。在循环的每个过程中,InnerHtml
会发生什么情况,等等。将while主体放在大括号中,看看这是否有帮助?如果这是您的实际代码,则while循环只执行description=(string)productList[“description”]
line.Wrap循环相关代码在{}中正如大家提到的,是while大括号丢失的问题。谢谢!!在我的评论之后,我想说只有“description=(string)productList[“description”];“如果你不使用大括号,它将属于你的WHILE循环。这使它成为一个打字错误问题,这意味着它应该关闭,而不是回答。@TimSchmelter-是的,但他们也没有调试过它(这是我对问题的评论建议他们做的)。如果他们这样做了,他们会看到只有description=
行被重复调用,在这一点上,这可能会使它成为一个有点好的问题,但实际上它也在研究中。@Damien_不信者,如果不使用大括号{},解释也只有一半。如果不使用大括号,则仅当条件将执行到最后一条记录时,下一行将开始执行。这意味着描述变量将只包含最后一个值,并且将创建一个且仅一个行标记。我在注释后打算说,只有“description=(string)productList[“description”];”我会在你手下