我正在使用VB.Net应用程序。我将它与MS Access数据库连接。现在我必须执行一个查询。我的问题是:Update table1 set field1=replace(field1,'|','"')
这个查询似乎可以从Access数据库的查询分析器中正常工作,但是当我从VB.Net代码执行相同的操作时,它会向我抛出错误,指出“表达式中未定义的函数'替换'”
我正在使用OLEDB连接和命令。我正在使用“executenonquery”功能。
任何人都可以帮助我吗?
答案 0 :(得分:4)
不幸的是,当您从VB.Net应用程序连接到Access数据库时,您根本没有使用Access查询引擎。你正在使用Jet。 Access中可用的某些功能(例如替换)在Jet中不可用。
经典的解决方案是结合使用 Iif , Instr 等( 可用)。是的,它不如使用替换那么好,但你必须学会不用。
答案 1 :(得分:3)
这个问题目前被接受的答案有点过时了。使用
Provider=Microsoft.ACE.OLEDB.12.0
以下C#代码运行正常:
cmd.CommandText =
"UPDATE table1 SET field1 = Replace(field1, '|', '\"')";
cmd.ExecuteNonQuery();
换句话说,Replace()
功能可能会导致旧版" Jet" OLEDB驱动程序(也许是早期版本的" ACE"驱动程序)但是从Access 2010的版本开始,这不再是一个问题。