如何将数据从TXT文件导入到Access数据库

时间:2019-04-08 17:22:25

标签: c# visual-studio ms-access

我正在尝试将数据从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();
}

1 个答案:

答案 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();
}