当updateBatchSize=0时,Oracle DataAdapter更新方法仅插入一行

当updateBatchSize=0时,Oracle DataAdapter更新方法仅插入一行,oracle,ado.net,adapter,Oracle,Ado.net,Adapter,我试图使用ado.net OracleDataAdapter类在Oracle数据库表中实现批插入。我将遵循以下步骤: 通过指定列名创建DataTable对象 接下来,用DataRows填充DataTable foreach (var item in product) { //bulkUpdateHelper.AddEntity(item); var dataRow = _dataTable.NewRow(); dataRow[1] = i

我试图使用ado.net OracleDataAdapter类在Oracle数据库表中实现批插入。我将遵循以下步骤:

  • 通过指定列名创建DataTable对象
  • 接下来,用DataRows填充DataTable

    foreach (var item in product)
        {
            //bulkUpdateHelper.AddEntity(item);
    
            var dataRow = _dataTable.NewRow();
            dataRow[1] = item.Description;
            dataRow[2] = item.Name;
            dataRow[3] = item.Price;
            dataRow[4] = item.Category;
    
            _dataTable.Rows.Add(dataRow);
        }
    
  • 我正在使用insert查询和select查询创建insert命令和select命令

  • 我为insert SQL中的每一列添加了insert参数

  • 然后,我通过指定select命令创建了
    OracleDataAdapter
    对象

  • 我调用了update方法设置UpdateBatchSize=0

  • 在调用更新时,只有一行被插入到数据库中,而datatable有多行。另外,当我尝试设置
    UpdateBatchSize>0
    时,我得到的对象引用未发现错误

    如果有人遇到过同样的问题,请提供帮助

    谢谢你的帮助和时间


    我解决了这个问题。添加datarow后,我对数据表而不是datarow调用了AcceptChanges()方法。

    请检查oracle中该表的主键约束,每行中可能有相同的唯一键值。我使用sequence.nextval作为唯一键值。能否发布插入SQL语句和代码