//////////////////////////////////////////////////// public override IDbCommand GetInsertCommand(DataTable table, IDbDataAdapter adapter, bool bDisableIdsAuto) { DataColumn[] cols = table.PrimaryKey; string strChampId = null; if (cols != null && cols.Length == 1) { if (cols[0].AutoIncrement) { strChampId = cols[0].ColumnName; } } OracleCommandBuilder builder = new OracleCommandBuilder((OracleDataAdapter)adapter); bool bAvecTriggerMajAuto = true; COracleDatabaseConnexion conOracle = m_connexion as COracleDatabaseConnexion; if (conOracle != null) { if (strChampId != null) { conOracle.GetNomSequenceColAuto(table.TableName, strChampId, ref bAvecTriggerMajAuto); } } if (strChampId != null && !bAvecTriggerMajAuto) { table.Columns[strChampId].AutoIncrement = false; } OracleCommand cmdInsert = builder.GetInsertCommand(); if (strChampId != null && !bAvecTriggerMajAuto) { table.Columns[strChampId].AutoIncrement = true; } if (m_connexion.IsInTrans()) { cmdInsert.Transaction = (OracleTransaction)m_connexion.Transaction; } if (strChampId != null) { C2iOracleDataAdapter oracleAdapter = C2iOracleDataAdapter.GetOracleDataAdapter(adapter); if (oracleAdapter != null && !bDisableIdsAuto) { oracleAdapter.PreparerInsertionLigneAvecAutoID(table.TableName, strChampId); } cmdInsert.UpdatedRowSource = UpdateRowSource.Both; } return(cmdInsert); }
//////////////////////////////////////////////////// public override IDbCommand GetInsertCommand(CStructureTable structure, bool bDisableIdAuto, IDbDataAdapter adapter) { bool bGestionAutoId = true; COracleDatabaseConnexion conOracle = m_connexion as COracleDatabaseConnexion; if (conOracle != null && structure.ChampsId.Length == 1 && structure.ChampsId[0].IsAutoId) { conOracle.GetNomSequenceColAuto(structure.NomTableInDb, structure.ChampsId[0].NomChamp, ref bGestionAutoId); } //Stef 2804 : N'exclue pas les champs exclus de l'insertion ! IDbCommand command = m_cacheRequetes.GetCache(structure.NomTable, ETypeRequete.Insert); if (command == null) { string strReq = "insert into " + structure.NomTableInDb + "("; string strValues = "("; foreach (CInfoChampTable champ in structure.Champs) { if ((!champ.IsAutoId || bDisableIdAuto || !bGestionAutoId)) { if (champ.TypeDonnee != typeof(CDonneeBinaireInRow) && !champ.TypeDonnee.IsSubclassOf(typeof(CDonneeBinaireInRow))) { strReq += champ.NomChamp + ","; strValues += GetNomParametreFor(champ, DataRowVersion.Current) + ","; } } } strReq = strReq.Substring(0, strReq.Length - 1) + ")"; strValues = strValues.Substring(0, strValues.Length - 1) + ")"; strReq += " values " + strValues; command = m_connexion.GetConnexion().CreateCommand(); command.CommandText = strReq; //Ajoute les paramètres foreach (CInfoChampTable champ in structure.Champs) { if ((!champ.IsAutoId || bDisableIdAuto || !bGestionAutoId)) { if (champ.TypeDonnee != typeof(CDonneeBinaireInRow) && !champ.TypeDonnee.IsSubclassOf(typeof(CDonneeBinaireInRow))) { command.Parameters.Add(GetParametreFor(command, champ, DataRowVersion.Current, ParameterDirection.Input)); } } } m_cacheRequetes.SetCache(structure.NomTable, ETypeRequete.Insert, command); } if (structure.HasChampIdAuto) { C2iOracleDataAdapter oracleAdapter = C2iOracleDataAdapter.GetOracleDataAdapter(adapter); if (oracleAdapter != null && !bDisableIdAuto) { oracleAdapter.PreparerInsertionLigneAvecAutoID(structure.NomTableInDb, structure.ChampsId[0].NomChamp); } } command.Connection = m_connexion.GetConnexion(); command.CommandType = CommandType.Text; command.Transaction = m_connexion.Transaction; command.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord; return(command); }