使用DB2 iSeries进行批量插入(C#)

tvz2xvvm  于 2023-01-17  发布在  DB2
关注(0)|答案(1)|浏览(140)

我正在尝试使用C#向db2进行批量插入。

CREATE TABLE tsdta.ftestbk1
(
   NUM numeric(8,0),
   TEXT varchar(30)
)

下面是我的测试代码:

using IBM.Data.DB2.iSeries;

...

using (iDB2Connection connection = new iDB2Connection("xxx"))
{
   string sql = @"insert into tsdta.ftestbk1 
                  values
                  (
                     @num,
                     @text
                  )";
   connection.Open();
   iDB2Command command = connection.CreateCommand();
   command.CommandType = CommandType.Text;
   command.CommandText = sql;
   command.Prepare();
   command.DeriveParameters();

   for (int i = 0; i < 5; i++)
   {
      command.Parameters.Add("@num", i);
      command.Parameters.Add("@text", $"some text for {i}");
      command.AddBatch();
   }

   int rows = command.ExecuteNonQuery();
   connection.Close();
}

当我执行代码时,表中只有NULL值。

NUM   | TEXT
------------
<null> |<null>
<null> |<null>
<null> |<null>
<null> |<null>
<null> |<null>

有人能告诉我我做错了什么吗?

mf98qq94

mf98qq941#

由于没有Db2示例进行双重检查,我将从内存和一些旧代码中执行此操作,但我有以下代码在我们的prodenv中运行(我已将其调整为与您的代码类似)

using (iDB2Connection connection = new iDB2Connection("xxx"))
{
    iDB2Command command = new iDB2Command("INSERT INTO TSDTA.FTESTBK1 VALUES(@NUM, @TEXT", connection);

    // Initialize the parameters collection
    command.DeriveParameters();

    for (int i = 0; i < 5; i++)
    {
        command.Parameters["@NUM"].Value = i;
        command.Parameters["@TEXT"].Value = $"some text {i}";
        command.AddBatch();
    }
    command.ExecuteNonQuery();
}

我们有一个类似的问题在当时,我得到了原始代码从这里...
C# - Insert Multiple Records at once to AS400

相关问题