c# – 如何找到循环执行的最后一次(dr.Read())?

看看下面的while循环.

sqlDataReader dr;

while (dr.Read())
{

Response.Write("insert into test values(N'"+dr[0]+"',N'"+dr[1]+"'),<br>");

}

我只是在最后(在那之前)用逗号打印一些东西.但是最后一次打印时,我不想要那个逗号.
如何找出这个循环最后一次执行?这样我就可以通过修改它来避免这个逗号被打印出来.

解决方法

一般来说,不可能不知道你是否在while循环的最后一次迭代.
您可以使用 loop-and-a-half,而不是最后一个,但循环的第一次运行是不同的,如下所示:

sqlDataReader dr = ...;

if (dr.Read())
{
  //no comma
  Response.Write("insert into test values(N'"+dr[0]+"',N'"+dr[1]+"')");
}

while (dr.Read())
{
  //put in a comma / break for the prevIoUs item
  Response.Write(",<br>insert into test values(N'"+dr[0]+"',N'"+dr[1]+"')");
}

但是,最好只使用StringBuilder在内存中构造字符串,然后立即响应所有响应.如下所示:

StringBuilder sb = new StringBuilder();    
while (dr.Read())
{
  //put in a comma / break for the prevIoUs item
  sb.Append("insert into test values(N'"+dr[0]+"',<br>");
}
sb.Remove(sb.Length-5,5); // remove the last,<br>

Response.Write(sb.ToString());

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...