使用DB2 iSeries (c#)进行大容量插入



我正在尝试使用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>
谁能告诉我我做错了什么?

在没有Db2实例进行双重检查的情况下,我从内存和一些旧代码中执行此操作,但是我有以下内容在我们的prod环境中为我运行(我已将其调整为看起来像您的)

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# -一次插入多个记录到AS400

最新更新