//////////////////////////////////////////////////// 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 static C2iMySqlDataAdapter GetMySqlDataAdapter(IDbDataAdapter adapter) { C2iMySqlDataAdapter MySqlAdapter = null; if (adapter is C2iDataAdapterForClasseAutoReferencee) { MySqlAdapter = (C2iMySqlDataAdapter)((C2iDataAdapterForClasseAutoReferencee)adapter).DataAdapterUtilise; } else if (adapter is C2iMySqlDataAdapter) { MySqlAdapter = (C2iMySqlDataAdapter)adapter; } return(MySqlAdapter); }
internal void ChargementSYSCHAMPAUTO() { string strTableChampsAuto = ""; foreach (string strNomTable in TablesNames) { if (strNomTable == c_nomTableSysChampAuto) { strTableChampsAuto = strNomTable; break; } } if (strTableChampsAuto != "") { m_dtSYS_CHAMP_AUTO = new DataTable(); string strRequete = "SELECT * FROM " + c_nomTableSysChampAuto; C2iMySqlDataAdapter adapter = (C2iMySqlDataAdapter)GetSimpleReadAdapter(strRequete); DataSet ds = new DataSet(); DataTable dt = new DataTable(); dt.TableName = "strTableChampsAuto"; ds.Tables.Add(dt); this.FillAdapter(adapter, ds); m_dtSYS_CHAMP_AUTO = ds.Tables[0]; } if (m_dtSYS_CHAMP_AUTO == null) { //Création de la tbale m_dtSYS_CHAMP_AUTO = new DataTable(c_nomTableSysChampAuto); m_dtSYS_CHAMP_AUTO.Columns.Add(c_nomChampSysChampAutoNomTable, typeof(string)); m_dtSYS_CHAMP_AUTO.Columns.Add(c_nomChampSysChampAutoNomChamp, typeof(string)); m_dtSYS_CHAMP_AUTO.Columns.Add(c_nomChampSysChampAutoSeqName, typeof(string)); m_dtSYS_CHAMP_AUTO.Columns.Add(c_nomChampSysChampAutoTriggerName, typeof(string)); } foreach (CInfoChampAuto info in m_listeChampsAutoHorsGestionSys) { DataRow row = m_dtSYS_CHAMP_AUTO.NewRow(); row[c_nomChampSysChampAutoNomChamp] = info.NomChamp; row[c_nomChampSysChampAutoNomTable] = info.NomTable; row[c_nomChampSysChampAutoTriggerName] = info.NomTrigger; row[c_nomChampSysChampAutoSeqName] = info.NomSequence; m_dtSYS_CHAMP_AUTO.Rows.Add(row); } }
/// ///////////////////////////////////////////////////// public override IDataAdapter GetTableAdapter(string strNomTableInDb) { IDbCommand commandtmp = GetConnexion().CreateCommand(); MySqlCommand command = new MySqlCommand(); command.CommandText = "Select * from " + GetNomTableForRequete(strNomTableInDb); command.Connection = new MySqlConnection(commandtmp.Connection.ConnectionString); if (command.Connection.ConnectionString.Length < ConnexionString.Length) { command.Connection.ConnectionString = ConnexionString; } C2iMySqlDataAdapter adapter = new C2iMySqlDataAdapter(command, this); return(adapter); }
/// ///////////////////////////////////////////////////// protected override IDbDataAdapter GetNewAdapter(IDbCommand selectCommand) { C2iMySqlDataAdapter adapter = new C2iMySqlDataAdapter((MySqlCommand)selectCommand, this); return((IDbDataAdapter)adapter); }