日期:2014-05-17  浏览次数:21174 次

导入txt数据时,数据导完之后,提示数组越界,运行不到最后一步。不知道什么地方出了问题,求各位大神帮帮忙
IEnumerable<string> lines = File.ReadLines(filename,Encoding.Default); 
foreach (string line in lines)
            {
                    string[] segs = line.Split('|');
                    string name = segs[0];
                    string telephone = segs[1];
                
                SQLHelper.ExecuteNonQuery("insert into myText.dbo.T_tel_company1(Name,tel) values (@name,@tel)",
                    new SqlParameter("@name",name), new SqlParameter("@tel",telephone));
                
            }
MessageBox.Show("成功导入"+lines.Count()+"条数据");
这个当数据导完之后,显示数组越界,运行不到最后一步。怎么办啊?什么地方出了问题,求各位大神帮帮忙

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

你确认每行都有“|”这个字符吗,没有的话,split时就会报这个错误的。

可能是数据的问题,最后的数据好像多了个回车。
但修改之后继续运行,却又出现错误了。“无法从已关闭的 TextReader 中读取。”这个要怎么解决啊??
百度了一下说using 的问题,把MessageBox放到using中就解决了。可是这样就没用Sqlhelper了。
有没有方法即可以用sqlhelper又可以解决“无法从已关闭的 TextReader 中读取。”这个问题的呢???


在这句代码后面加上

IEnumerable<string> lines = File.ReadLines(filename,Encoding.Default);
int count = lines.Count();
 
不行,还是报错。但你再次运行的时候会和打开文件出来,
然后把最后的代码改成:

MessageBox.Show("成功导入"+count+"条数据");



修正之前的改法,你只要把File.ReadLines改成File.ReadAllLines应该就可以了。
------解决方案--------------------
ReadLines在某个.Net Framework版本好像是有bug的,详细在这里。

我机器上现在装的.Net Framework 4.5是没有这样问题的。你可以考虑升级一下你的.Net Framework。