0

我们有遗留数据作为 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 语句。

4

1 回答 1

1

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

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

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

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

于 2012-10-03T14:41:45.937 回答