在OleDbCommand中指定insert语句中的函数

时间:2012-10-03 14:15:52

标签: sql-server oledb oledbcommand

我们将遗留数据存储在MSSQL数据库中作为varchar,即使数据实际上是二进制数据。 在新的应用程序中,我们使用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。在阅读和写作之间,我使用方法' SetAdded()'在DT的每一行上,以便插入所有这些行。

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

1 个答案:

答案 0 :(得分:1)

如果没有看到完整的代码,您似乎只是没有将参数添加到DA.InsertCommand

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

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

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