看看下面的while循环。
SqlDataReader dr;
while (dr.Read())
{
Response.Write("insert into test values(N'"+dr[0]+"', N'"+dr[1]+"'),<br>");
}
我只是在最后(在那之前
)用逗号打印一些东西。但是最后一次打印时,我不想要那个逗号。如何找出这个循环是最后一次执行?这样我就可以通过修改它来避免打印这个逗号。
我会稍微重组它。在你的读者面前,实例化一个错误的布尔值。在您第一次阅读后将其设置为 true。然后,在您阅读的代码中,添加如果为真,添加逗号和中断到上一行。那你就不用担心是不是最后一行了,因为不会有下一行加逗号和换行。
不完全确定您到底需要什么,但基于:
但是最后一次打印时,我不想要那个逗号。
退出循环后可以使用string.TrimEnd 。
string str = yourstring.TrimEnd(',');
如果您的字符串末尾有逗号,它将删除它,如果没有,它将保留字符串原样。
编辑:错过了 Respose.Write 部分。
您可以在 while 循环中构建一个字符串,然后使用string.TrimEnd
并稍后Response.Write
与新字符串一起使用。
一般来说,不知道您是否处于 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]+"')");
}
但是,最好只使用 aStringBuilder
在内存中构造字符串,然后Response.Write
一次完成,如下所示:
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]+"', N'"+dr[1]+"'),<br>");
}
sb.Remove(sb.Length-5,5); // remove the last ,<br>
Response.Write(sb.ToString());
您可以使用TrimEnd
删除最后一个逗号的方法。
从当前 String 对象中删除数组中指定的一组字符的所有尾随出现
str.TrimEnd(',');
您应该遵循与这些类似的说明;
string str = null;
while (dr.Read())
{
str += "insert into test values(N'"+dr[0]+"', N'"+dr[1]+"'),<br>";
}
str = str.TrimEnd(',');
Response.Write(str);
SqlDataReader dr;
while (dr.Read())
{
Response.Write("insert into test values(N'"+dr[0]+"', N'"+dr[1]+"'),<br>");
}
不要使用 Respose.Write,而是将字符串放在这样的变量中
while (dr.Read())
{
string yourstring = "insert into test values(N'"+dr[0]+"', N'"+dr[1]+"'),<br>";
}
并且在循环之后您可以使用
string str = yourstring.Substring(0, yourstring.Length - 1);
恐怕你需要一个变量!
bool first=true;
while (dr.Read())
{
if (first) first = false;
else Response.Write(",<br>");
Response.Write("insert into test values(N'" + dr[0] + "', N'" + dr[1] + "')");
}
int i = 0;
while (dr.Read())
{
if (i != 0)
{
Response.Write(",<br>");
}
Response.Write("insert into test values(N'" + dr[0] + "', N'" + dr[1] + "')");
i++;
}
它解决了我的问题。@SWeko 的解决方案也很有效。非常感谢你们的帮助。
试试这样...它会帮助你..
SqlDataReader dr;
DataTable dt = new DataTable();
dt.Load(dr);
int _RowCount = dt.Rows.Count;
int inc = 0 ;
while (dr.Read())
{
inc = inc + 1;
if(inc==_RowCount)
//Without Comma
else
//With Comma
}