如何使用 C# 正确写入 Access (2002-2003) 数据库

Posted

技术标签:

【中文标题】如何使用 C# 正确写入 Access (2002-2003) 数据库【英文标题】:How to properly write to an Access (2002-2003) database using C# 【发布时间】:2018-05-17 03:44:27 【问题描述】:

我无法使用 C# 将新条目写入本地 Access 2002-2003 (.mdb) 数据库,问题是 OleDbCommand 中我的 cmdText 属性的语法 em> 类。

请不要提及参数化 SQL 语句或 SQL 注入,因为这仅用于个人测试

无论如何,这是我尝试使用的命令文本:

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Daniel\source\repos\DatabaseInteraction2\DatabaseInteraction2\SimpleDatabase.mdb";

        OleDbCommand command;

        using (OleDbConnection connection = new OleDbConnection(connectionString))
        
            connection.Open();
            command = new OleDbCommand("Insert Into SimpleTable (userName,userPassword) Values " +
            "('TestUsername','TestPassword')", connection);

            try
            
                command.ExecuteNonQuery();
            
            catch(Exception error)
            
                Console.WriteLine(error.Message
            
        

在 Access 数据集中执行插入的正确方法是什么?我应该使用什么语法?目前,我尝试了 6 种不同的方法,但都没有奏效。

我得到的异常与以下有些相似:

未知参数 目录丢失 “插入”中的语法错误

【问题讨论】:

@mjwills 如果错误的方法不能阻止 SQL 注入,那么我不介意(目前),我需要一个简单的、最新的使用 Microsoft 的示例OleDb 将数据插入数据集 你试过***.com/questions/10941284/…吗? 在您发布的代码中,您为什么要创建两个OleDbCommand 对象?为什么要声明一个变量,创建一个新对象,将它分配给变量,然后完全忽略两者?如果您想学习如何使用数据库,请对使用数据库进行一些研究。如果您需要有关特定问题的帮助,请提供有关该特定问题的信息。我们不关心我们看不到的代码产生的错误消息的模糊近似值。您发布的代码生成的实际错误消息是什么?它发生在哪里? @mjwills 另外,我的完整代码是葡萄牙语,对你来说很难,最常见的例外是 0x80040E14 “我需要一个使用 Microsoft 的 OleDb 将数据插入数据集的简单、最新示例”。对于网络上已有的众多示例,您到底有什么不明白的地方? 【参考方案1】:

你的代码大部分都很好(你错过了);在 console.writeline 的末尾)。但是,您的连接字符串是错误的。改成...

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Daniel\source\repos\DatabaseInteraction2\DatabaseInteraction2\SimpleDatabase.mdb";

确保您的数据库存在于该位置。否则,这工作得很好。

您可能需要考虑改用 Microsoft.ACE.OLEDB.12.0,因为 Microsoft.Jet.OLEDB.4.0 是较旧的驱动程序。

【讨论】:

以上是关于如何使用 C# 正确写入 Access (2002-2003) 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中创建 Microsoft Access 数据库? [复制]

如何使用C#将包含文字、图片和表格的二进制数据写入到word文件中

用Access作为后台数据库支撑,书写一个用C#写入记录的案例

以Access为支撑,书写一个C#写入记录的案例

使用 VB 写入大量记录以访问

从c#按顺序将行插入Access Table