从 C# 通过 OLEDB 执行更新时出错

Posted

技术标签:

【中文标题】从 C# 通过 OLEDB 执行更新时出错【英文标题】:Error executing update over OLEDB from C# 【发布时间】:2010-07-07 15:17:32 【问题描述】:

我正在使用 OLEDB 从 c# 更新 .dbf 数据库中的数据。

ExecuteNonQuery 上出现错误:System.Data.OleDb.OleDbException "Undefined function 'replace' in expression."。

我怎样才能以最少的更改完成这项工作,我需要在许多文件中用单引号替换双引号,所以我必须自动化这个过程。

我应该为 .dbf 数据库尝试 ODBC 还是其他方式?

请帮忙!

string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + directory +";Extended Properties=dBASE III;";
OleDbConnection conn = new OleDbConnection(connString);
conn.Open();
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "update Addres_1  set NAME_ENU = replace(NAME_ENU, 'a',   'b') where NAME_ENU like '*a*'";
int res = cmd.ExecuteNonQuery();

【问题讨论】:

'replace'函数的大小写是否正确?应该是“替换”吗? 'Replace' 和 'REPLACE' 结果没有任何变化 【参考方案1】:

使用的数据提供者不支持替换。 如果以及当我发现如何在大型数据集上以快速简单的方式执行此操作时,我将更新答案。

【讨论】:

以上是关于从 C# 通过 OLEDB 执行更新时出错的主要内容,如果未能解决你的问题,请参考以下文章

通过 Oledb c# 防止重复数据从 Excel 到 db

如何在c#中使用oledb执行pl sql块

C#如何通过OleDb更新Excel中的数据

当我尝试执行超过 1 个查询时,循环在 OleDb 中插入数据中断

使用 C# 执行 SQLCommand 时出错

在 C# 中使用 oledb 更新数据