以编程方式将行插入 MS Access DB 时出错 (C#)
Error inserting row into MS Access DB programmatically (C#)
我有一个 Microsoft Access 数据库(*.mdb 文件),我需要以编程方式(在 C# 中)将行插入其中。我无法控制此访问文件 - 它是我需要使用的预先存在的文件。
当我尝试使用下面的代码执行此操作时,抛出 System.Data.OleDb.OleDbException。该异常中的消息包含已定义为其中一个字段(客户)的验证文本的相同文本。所以从表面上看,异常消息表明我没有提供必填字段,或者我为该字段提供了无效值。
但是,我传递的值应该是 Ok。当然,在 Access 本身中插入具有相同值的行可以正常工作。
我使用的代码是:
using (var connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\Indial_Reg.mdb;"))
{
connection.Open();
using (var cmd = new OleDbCommand("INSERT INTO [Indial Register] ([Exchange],[Customer]) Values ('WISB/SYRA','TEST')", connection))
{
try
{
cmd.ExecuteNonQuery();
}
catch (OleDbException e)
{
}
}
}
有趣的是,当我打开 Microsoft Access 并在访问脚本编辑器中发出完全相同的 INSERT INTO 命令时,插入工作完美无缺。
如果相关,在客户字段上定义的验证规则是:
喜欢“[A-Z]”
我是否使用了错误的连接字符串?错误的提供商驱动程序?
谁能指出我在代码中做错了什么?
我束手无策。任何帮助都会很棒。
我的环境是:Windows7 32位。我安装了 MS Access 2007。
我的代码是 运行 Visual Studio 2012.
谢谢。
问题是您现在拥有的验证规则不允许您的应用程序的值。
您需要的验证规则是:
Like "%[A-Z]" Or Like "*[A-Z]"
规则“%[A-Z]”将允许来自应用程序的 A 到 Z 之间的字符
和
规则“*[A-Z]”允许从 Access
我有一个 Microsoft Access 数据库(*.mdb 文件),我需要以编程方式(在 C# 中)将行插入其中。我无法控制此访问文件 - 它是我需要使用的预先存在的文件。
当我尝试使用下面的代码执行此操作时,抛出 System.Data.OleDb.OleDbException。该异常中的消息包含已定义为其中一个字段(客户)的验证文本的相同文本。所以从表面上看,异常消息表明我没有提供必填字段,或者我为该字段提供了无效值。
但是,我传递的值应该是 Ok。当然,在 Access 本身中插入具有相同值的行可以正常工作。
我使用的代码是:
using (var connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\Indial_Reg.mdb;"))
{
connection.Open();
using (var cmd = new OleDbCommand("INSERT INTO [Indial Register] ([Exchange],[Customer]) Values ('WISB/SYRA','TEST')", connection))
{
try
{
cmd.ExecuteNonQuery();
}
catch (OleDbException e)
{
}
}
}
有趣的是,当我打开 Microsoft Access 并在访问脚本编辑器中发出完全相同的 INSERT INTO 命令时,插入工作完美无缺。
如果相关,在客户字段上定义的验证规则是: 喜欢“[A-Z]”
我是否使用了错误的连接字符串?错误的提供商驱动程序? 谁能指出我在代码中做错了什么? 我束手无策。任何帮助都会很棒。
我的环境是:Windows7 32位。我安装了 MS Access 2007。 我的代码是 运行 Visual Studio 2012.
谢谢。
问题是您现在拥有的验证规则不允许您的应用程序的值。
您需要的验证规则是:
Like "%[A-Z]" Or Like "*[A-Z]"
规则“%[A-Z]”将允许来自应用程序的 A 到 Z 之间的字符
和
规则“*[A-Z]”允许从 Access