如何使用 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文件中