//////////////////////////////////////////////////// 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 C2iMySqlDataAdapter(MySqlCommand commande, CMySqlDatabaseConnexion MySqlDbConnexion) { m_adapter = new MySqlDataAdapter(commande); m_encapsuleurConnexion = MySqlDbConnexion; m_connexion = commande.Connection; m_transaction = commande.Transaction; if (MySqlDbConnexion is CMySqlDatabaseConnexionSynchronisable) { m_synchro = true; } else { m_synchro = false; } m_adapter.RowUpdated += new MySqlRowUpdatedEventHandler(m_adapter_RowUpdated); }
//------------------------------------------------------------------------------------------------ public CMySqlDataBaseCreator(CMySqlDatabaseConnexion connexion) { m_connection = connexion; m_connection.CommandTimeOut = 5 * 1000 * 60; m_mappeur = new CMySqlTypeMapper(); }
public C2iMySqlAdapterBuilderForType(Type tp, CMySqlDatabaseConnexion connexion) : base(tp, connexion) { }
/// <summary> /// </summary> public C2iMySqlAdapterBuilder(string strNomTableInDb, CMySqlDatabaseConnexion connexion) : base(strNomTableInDb, connexion) { }