在 OleDbCommand 的插入语句中指定函数

Posted

技术标签:

【中文标题】在 OleDbCommand 的插入语句中指定函数【英文标题】:Specifying function inside insert statement in OleDbCommand 【发布时间】:2012-10-03 14:15:51 【问题描述】:

我们有以 varchar 形式存储在 MSSQL 数据库中的遗留数据,即使这些数据实际上是二进制的。 在新的应用程序中,我们使用 OleDbCommand(因为我们试图使用通用代码来访问 MSSQL+Oracle+Sybase)数据库。

我可以通过执行以下操作从数据库中检索数据:

    DA.SelectCommand.CommandText = "select 
sequence_num, summary_num, line_num, CONVERT(varbinary, other_information) other_information 
from alex_test_bin";

然而插入命令:

   DA.InsertCommand.CommandText = "insert into alex2_test_bin 
(sequence_num, summary_num, line_num, other_information) 
values(?, ?, ?, CONVERT(varchar, ?))";

抛出此错误(它发生在 'DA.Update(DT);' 期间):

没有为一个或多个必需参数指定值。

目前我只是试图从 alex_test_bin 读取数据并将数据插入 alex2_test_bin。在读取和写入之间,我在 DT 的每一行上使用方法 'SetAdded()',以便插入所有这些行。

我的插入语句错了吗?有没有办法纠正它,并且能够在插入语句中使用函数?我成功地从 sql manager 手动运行了 insert 语句。

【问题讨论】:

INSERT 语法没有任何问题,因为您在 SSMS 中验证了自己。您是否按照错误消息的建议检查了参数值?例如,请参阅this question。 【参考方案1】:

没有看到您的完整代码,您似乎根本没有将参数添加到DA.InsertCommand

对于每个用? 表示的参数,您需要附加一个 OleDbParameter:

DA.InsertCommand.Parameters.Parameters.Add("@sequence_num", OleDbType.Integer).Value = 42

您需要按照在insert into 语句中指定的顺序将它们附加到命令中。

【讨论】:

如何在插入语句中调用函数,例如插入我的表值(myfunction,1,2,3)? @bjan 将此作为新问题发布,您可能会得到一些答案。 ***.com/questions/13494743/…

以上是关于在 OleDbCommand 的插入语句中指定函数的主要内容,如果未能解决你的问题,请参考以下文章

MySQL插入中文数据乱码问题

oracle中替换字段中指定字符串的语句

如何将一个char数组中元素插入到另一个char数组中指定元素后面,在java语言环境,但不能使用java的内置函数

SQL server数据库统计指定字段符合数组中指定个数的SQL语句写法

Postgres:如何在where语句中指定参数[重复]

在 Oracle Merge 语句的 Using 子句中指定参数