【问题标题】:How to import data from a TXT file to an Access Database如何将数据从 TXT 文件导入 Access 数据库
【发布时间】:2019-04-08 17:22:25
【问题描述】:

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

【问题讨论】:

    标签: c# visual-studio ms-access


    【解决方案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();
    }
    

    【讨论】:

    • 非常感谢!你帮了我很多。
    猜你喜欢
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 2012-11-16
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多