我试图将文本文件数据插入到sql
服务器数据库,这里是我的示例代码,当我执行此操作时,只有文本的第一行文件(10,sac,10 hung vuong)
保存到数据库中,但此错误是发生当数据插入到数据库时发生数组错误时发生错误
System.IndexOutOfRangeException是未处理
指数数组的 范围之外。
示例文本文件
10,sac,10 hung vuong
11,mad,11 Hung call
22,wick,22 Hung poll
这里是我的代码
string line;
using (SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=texttodb;Integrated Security=True"))
{
con.Open();
using (StreamReader file = new StreamReader(@"E:\a.txt"))
{
while((line = file.ReadLine()) != null)
{
string[] fields = line.Split(',');
SqlCommand cmd = new SqlCommand("INSERT INTO tblUser(id, name, address) VALUES (@id, @name, @address)", con);
cmd.Parameters.AddWithValue("@id", fields[0].ToString());
cmd.Parameters.AddWithValue("@name", fields[1].ToString());
cmd.Parameters.AddWithValue("@address", fields[2].ToString());
cmd.ExecuteNonQuery();
}
}
}
谢谢你,它的工作:) – SMW
的的长度即使该行的长度大于0,“字段”字符串数组仍然可能不是3。这就是为什么我建议在尝试访问数组中的字符串之前检查数组的实际长度。 – mm8
@ mm8你是对的,但是字段数是一个不同的验证*(并且OP也应该包括它)*。但是你也可以检查很多其他的东西,比如第一个字段必须是整数等,但是对于在分割之前应该发生的“空行”验证。空字符串的分割没有意义。 –