我试图将文本文件数据插入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();
}
}
}
答案 0 :(得分:2)
确保您跳过任何空行:
while ((line = file.ReadLine()) != null)
{
string[] fields = line.Split(',');
if(fields.Length == 3) //<--
{
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();
}
}
答案 1 :(得分:0)
好吧,如果这是确切的文本文件
10,sac,10 hung vuong
11,mad,11 Hung call
22,wick,22 Hung poll
每条数据线之间都有空行。将文件编辑为:
10,sac,10 hung vuong
11,mad,11 Hung call
22,wick,22 Hung poll
或者提出条件
if (line.Length > 0) {
string[] fields = line.Split(',');
....
}