在 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 的插入语句中指定函数的主要内容,如果未能解决你的问题,请参考以下文章
如何将一个char数组中元素插入到另一个char数组中指定元素后面,在java语言环境,但不能使用java的内置函数