////////////////////////////////////////////////////
        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);
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        /// /////////////////////////////////////////////////////
        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);
        }
Beispiel #6
0
        /// /////////////////////////////////////////////////////
        protected override IDbDataAdapter GetNewAdapter(IDbCommand selectCommand)
        {
            C2iMySqlDataAdapter adapter = new C2iMySqlDataAdapter((MySqlCommand)selectCommand, this);

            return((IDbDataAdapter)adapter);
        }