看看下面的while循环。
SqlDataReader dr;
while (dr.Read())
{
Response.Write("insert into test values(N'"+dr[0]+"', N'"+dr[1]+"'),<br>");
}
我只是在末尾用逗号打印(在那之前)。但是最后一次打印时,我不想要那个逗号。 如何找出这个循环最后一次执行?所以我可以通过修改它来避免这个逗号被打印出来。
答案 0 :(得分:3)
我会稍微重组一下。在读者之前,实例化一个假布尔值。在您第一次阅读后将其设置为true。然后,在您的读取代码中,添加if,添加逗号并中断到上一行。那么你不必担心它是否是最后一行,因为没有下一行可以添加逗号和中断。
答案 1 :(得分:2)
不完全确定您的确切需要,但基于:
但是最后一次打印时,我不想要那个逗号。
退出循环后,您可以使用string.TrimEnd。
string str = yourstring.TrimEnd(',');
如果你的字符串在末尾有逗号,它将删除它,如果它没有,它将保持字符串不变。
编辑:错过了Respose.Write部分。
您可以在while循环中构建一个字符串,然后使用string.TrimEnd
,然后使用Response.Write
和新字符串。
答案 2 :(得分:2)
一般情况下,如果你是在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
在内存中构造字符串,然后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());
答案 3 :(得分:0)
您可以使用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);
答案 4 :(得分:0)
我担心你需要变量!
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] + "')");
}
答案 5 :(得分:0)
尝试这样......它会帮助你......
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
}
答案 6 :(得分:0)
答案 7 :(得分:0)
SqlDataReader dr;
while (dr.Read())
{
Response.Write("insert into test values(N'"+dr[0]+"', N'"+dr[1]+"'),<br>");
}
不是使用Response.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);
答案 8 :(得分:0)
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的解决方案也运行良好。 非常感谢你们的帮助。