Я на самом деле понятия не имею, что вы пытаетесь сделать.Я не знаю, что такое IBM400 или как его использовать, но я думаю, что приведенное ниже, возможно, является решением?
try
{
//cnn = new iDB2Connection(Db2ConStr);
cmd = new iDB2Command
{
Connection = cnn,
CommandText = sInsertSql
};
cnn.Open();
cmd.DeriveParameters();
int index;
while(index < parms.Count)
{
cmd.DeriveParameters();
// Insert 10 rows of data at once
// Here, you set your parameters for a single row
cmd.Parameters["@SETTORE_GESTIONALE"].Value = param[i].SETTORE_GESTIONALE;
cmd.Parameters["@RAPPORTO_GESTIONALE"].Value = param[i].RAPPORTO_GESTIONALE ;
cmd.Parameters["@DATA_RIFERIMENTO"].Value = param[i].DATA_RIFERIMENTO ;
cmd.Parameters["@FLAG_AFFIDATO_CASSA"].Value = param[i].FLAG_AFFIDATO_CASSA;
cmd.Parameters["@FLAG_AFFIDATO_SBF"].Value = param[i].FLAG_AFFIDATO_SBF ;
cmd.AddBatch();
if(index % 32767 == 0 || index == params.Count() - 1)
{
trans = cnn.BeginTransaction();
cmd.Transaction = trans;
int rowsUpdated = cmd.ExecuteNonQuery();
trans.Rollback();
cmd = new iDB2Command
{
Connection = cnn,
CommandText = sInsertSql
};
}
index++;
}
Я не знаю, где вы получаете исключение, поэтому я догадался, что"cmd.ExecuteNonQuery ();"была причина проблемы.
Может быть, вы вынуждены добавить их ВСЕ и сразу отправить ВСЕ, и в этом случае мое решение не будет работать.
Однако, если нет, надеюсь, выможет реализовать логику, которую я использовал при попытке уклониться от максимального предельного размера