C#:将数据从字符串数组输入到 MS 访问数据库表中

本文关键字:MS 访问 数据库 输入 数组 数据 字符串 | 更新日期: 2023-09-27 18:36:55

我已经搜索了尽可能多的内容,但找不到任何可以帮助我的东西。所以我有一个脚本,用于读取/拆分数据并将其从.txt文件存储到一些数组中。(这里列出的是Vndnbr)。我遇到的问题是如何将数组中的每个条目作为 MS Access 表中列下的条目输入?这是我到目前为止所拥有的:

public void AddToDatabase()
{
    OleDbCommand command;
    OleDbConnection connection =
        new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;" +
                            "Data Source=filepath");
    foreach (string x in Vndnbr)
    {
        cmdstringVND[k] = "insert into Table1 (Vndnbr) Values (x)";
        k++;
        command = OleDbCommand(cmdstringVND[k],connection);
    }
    command.Parameters.AddWithValue("?", ReadFromFile("filepath"));
    connection.Open();
    command.ExecuteNonQuery();
    connection.Close();
}

我不熟悉访问库或应该在 AddwithValue 的第一个参数中插入的内容,因为我只是在进行一些研究后复制粘贴了这些行。如果有人能帮助我如何将数组中的所有数据添加到表中,将不胜感激,谢谢。

C#:将数据从字符串数组输入到 MS 访问数据库表中

代码中有许多错误

  • 在循环中,不使用参数来存储要的值插入
  • 你永远不会创建命令。(使用新)
  • 尝试只执行最后一个命令,因为 ExecuteNonQuery 在循环之外

    public void AddToDatabase()
    {
        string cmdText = "insert into Table1 (Vndnbr) Values (?)";
        using(OleDbConnection connection = new OleDbConnection(.....))
        using(OleDbCommand command = new OleDbCommand(cmdText, connection))
        {
            connection.Open();
            command.Parameters.AddWithValue("@p1", "");
            foreach (string x in Vndnbr)
            {
                 command.Parameters["@p1"].Value = x;
                 command.ExecuteNonQuery();
            }
        }
    }
    

我已经更改了您的代码以包含 using 语句以正确关闭和释放连接和命令,然后我在循环外初始化了命令,传递了一个公共字符串作为参数占位符,并使用虚拟值初始化此参数。

在循环中,我已将之前的参数值替换为Vndnbr列表获得的实际值并执行了命令。

您需要将 SQL 更改为以下内容:

"insert into Table1 (Vndnbr) Values (@x)";

然后AddWithValue是这样的:

command.Parameters.AddWithValue("@x", ReadFromFile("filepath"));

您所做的只是说,对于此参数名称,我希望分配此值。