我正在尝试将数据从txt文件导入到Access数据库,但是它仅导入文件的第一条记录。 这是代码
我还尝试了一种更困难的方法,将数据存储在3个数组中(因为我有3列),我检查了它们并获得了正确的数据,但是当我将其插入访问时,它仅导入第一个记录6次(这是我在txt文件上有多少记录)
OleDbCommand cmd = new OleDbCommand("INSERT into Utilizatori (Nume, Parola, Email) values(@nume, @parola, @email)", conn);
string[] values;
foreach (string line in File.ReadLines(@"D:\vlad\c#\centenar\Centenar\bin\Debug\utilizatori.txt"))
{
values = line.Split('*');
cmd.Parameters.Add("@nume", OleDbType.VarChar).Value = values[0];
cmd.Parameters.Add("@parola", OleDbType.VarChar).Value = values[1];
cmd.Parameters.Add("@email", OleDbType.VarChar).Value = values[2];
cmd.ExecuteNonQuery();
}
答案 0 :(得分:1)
在循环中,您将参数连续添加到命令中。因此,在第一个循环之后,该命令具有3个参数,在第二个循环之后,您具有6个参数,然后打开,但是在执行该命令时,仅考虑前三个参数,因此您将始终插入相同的值。
您可以使用
清除每个循环中的参数集合cmd.Parameters.Clear();
但是最好只在循环外定义一次参数,而在循环内,只需替换值即可。
OleDbCommand cmd = new OleDbCommand("INSERT into Utilizatori (Nume, Parola, Email) values(@nume, @parola, @email)", conn);
cmd.Parameters.Add("@nume", OleDbType.VarChar);
cmd.Parameters.Add("@parola", OleDbType.VarChar);
cmd.Parameters.Add("@email", OleDbType.VarChar);
string[] values;
foreach (string line in File.ReadLines(@"D:\vlad\c#\centenar\Centenar\bin\Debug\utilizatori.txt"))
{
values = line.Split('*');
cmd.Parameters["@nume"].Value = values[0];
cmd.Parameters["@parola"].Value = values[1];
cmd.Parameters["@email"].Value = values[2];
cmd.ExecuteNonQuery();
}