//////////////////////////////////////////////////// public override IDbCommand GetInsertCommand(CStructureTable structure, bool bDisableIdAuto, IDbDataAdapter adapter) { bool bGestionAutoId = true; CMySqlDatabaseConnexion conMySql = m_connexion as CMySqlDatabaseConnexion; if (conMySql != null && structure.ChampsId.Length == 1 && structure.ChampsId[0].IsAutoId) conMySql.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) { C2iMySqlDataAdapter MySqlAdapter = C2iMySqlDataAdapter.GetMySqlDataAdapter(adapter); if (MySqlAdapter != null && !bDisableIdAuto) MySqlAdapter.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; }
//////////////////////////////////////////////////// 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; } } MySqlCommandBuilder builder = new MySqlCommandBuilder((MySqlDataAdapter)adapter); bool bAvecTriggerMajAuto = true; CMySqlDatabaseConnexion conMySql = m_connexion as CMySqlDatabaseConnexion; if (conMySql != null) { if (strChampId != null) { conMySql.GetNomSequenceColAuto(table.TableName, strChampId, ref bAvecTriggerMajAuto); } } if (strChampId != null && !bAvecTriggerMajAuto) { table.Columns[strChampId].AutoIncrement = false; } MySqlCommand cmdInsert = builder.GetInsertCommand(); if (strChampId != null && !bAvecTriggerMajAuto) { table.Columns[strChampId].AutoIncrement = true; } if (m_connexion.IsInTrans()) { cmdInsert.Transaction = (MySqlTransaction)m_connexion.Transaction; } if (strChampId != null) { C2iMySqlDataAdapter MySqlAdapter = C2iMySqlDataAdapter.GetMySqlDataAdapter(adapter); if (MySqlAdapter != null && !bDisableIdsAuto) { MySqlAdapter.PreparerInsertionLigneAvecAutoID(table.TableName, strChampId); } cmdInsert.UpdatedRowSource = UpdateRowSource.Both; } return(cmdInsert); }
/// ///////////////////////////////////////////////////////////////// public void PreparerInsertionLigneAvecAutoID(string nomTableInDb, string champIDAuto) { bool bAvecTrigger = false; string strSequence = m_encapsuleurConnexion.GetNomSequenceColAuto(nomTableInDb, champIDAuto, ref bAvecTrigger); if (bAvecTrigger) { m_strRqtSelectionNewRowIDAvecTrigger = "SELECT " + strSequence + ".CURRVAL from DUAL"; m_strRqtSelectionNewRowIDSansTrigger = ""; } else { m_strRqtSelectionNewRowIDAvecTrigger = ""; m_strRqtSelectionNewRowIDSansTrigger = "SELECT " + strSequence + ".NEXTVAL from DUAL";; } m_champIDAuto = champIDAuto; }