streamreader求助

bkhm07 2012-05-17 10:52:05
streamreader readline的时候,为啥循环里面的插入数据库的步骤会重复执行啊
代码如下:

StreamReader sr = new StreamReader(File.OpenRead(Server.MapPath(SavePath + Session.SessionID + timestamp + ".txt")), System.Text.Encoding.GetEncoding("GB2312"));
DataSet ds = new DataSet();

string srtext = "";
string[] srtextarray;

if (sr.Peek() < 0)
{
errInfo = "文件为空";
this.MessageShow(errInfo);
}
else
{
if (rc < 100)
{
//读每一行并处理
while (sr.Peek() >= 0 && Response.IsClientConnected)
{
try
{
srtext = sr.ReadLine();
rc++;

srtextarray = srtext.Split(',');

#region 日志
LogError("1");
#endregion

sql = "insert into #1 (userid) values ('" + srtextarray[1] + "') select @@Identity";
ID = dbq.GetFirstValueBySql(sql);
if (ID == "")
{
LogError("2");
continue;
}

#region 业务处理

#endregion
}
catch (Exception ex)
{
LogError(ex);
continue;
}
}
}
}
...全文
111 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bkhm07 2012-05-17
  • 打赏
  • 举报
回复
			StreamReader sr = new StreamReader(File.OpenRead(Server.MapPath(SavePath + Session.SessionID + timestamp + ".txt")), System.Text.Encoding.GetEncoding("GB2312"));
DataSet ds = new DataSet();

string srtext = "";
string[] srtextarray;

if (sr.Peek() < 0)
{
errInfo = "文件为空";
this.MessageShow(errInfo);
}
else
{
if (rc < 100)
{
//读每一行并处理
while (sr.Peek() >= 0 && Response.IsClientConnected)
{
try
{
srtext = sr.ReadLine();
rc++;

srtextarray = srtext.Split(',');

#region 日志
LogError("1");
#endregion

sql = "insert into #1 (userid) values ('" + srtextarray[1] + "') select @@Identity";
ID = dbq.GetFirstValueBySql(sql);
if (ID == "")
{
LogError("2");
continue;
}

#region 业务处理

#endregion
}
catch (Exception ex)
{
LogError(ex);
continue;
}
}
}
}
bkhm07 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:

continue;
这里什么意思?


跳出当前行的循环进入下一行循环啊
[/Quote]

我的理解是这样的,不知道对不对。。
bkhm07 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

continue;
这里什么意思?
[/Quote]

跳出当前行的循环进入下一行循环啊
EnForGrass 2012-05-17
  • 打赏
  • 举报
回复
continue;
这里什么意思?
bkhm07 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

说明 while (sr.Peek() >= 0 && Response.IsClientConnected) 条件一直满足

while中有 sr.ReadLine();,这样sr.Peek就会一直有数,永远出不来
[/Quote]

不可能一直满足啊,我测试导了3条数据,结果 LogError("1")的日志只有3条,但是数据库的记录这3条重复了2次变成6条记录了。
bdmh 2012-05-17
  • 打赏
  • 举报
回复
说明 while (sr.Peek() >= 0 && Response.IsClientConnected) 条件一直满足

while中有 sr.ReadLine();,这样sr.Peek就会一直有数,永远出不来
bkhm07 2012-05-17
  • 打赏
  • 举报
回复
readline每行的LogError("1")日志只会有一条记录,但是数据库#1里的userid每次导入都有重复的2条,后面业务处理也都只会处理其中一条,请问是什么原因啊。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧