Пример #1
0
        /// <summary>
        /// Cambia la data di riferimento.
        /// </summary>
        /// <param name="dataAttiva">Nuova data di riferimento.</param>
        //public void ChangeDate(string dataAttiva)
        //{
        //    _dataAttiva = dataAttiva;
        //}
        /// <summary>
        /// Cambia l'id applicazione (utilizzato solo in invio programmi quando viene cambiato il programma).
        /// </summary>
        /// <param name="appID">Nuovo id applicazione.</param>
        //public void ChangeAppID(int appID)
        //{
        //    _idApplicazione = appID;
        //}

        /// <summary>
        /// Funzione per l'esecuzione di una stored procedure che inserisce o modifica valori sul db senza restituire nessun risultato.
        /// </summary>
        /// <param name="storedProcedure">Nome della stored procedure.</param>
        /// <param name="parameters">Parametri richiesti dalla stored procedure.</param>
        /// <returns>True se il comando è andato a buon fine, false altrimenti.</returns>
        public bool Insert(string storedProcedure, QryParams parameters, int timeout = 300)
        {
            if (!parameters.ContainsKey("@IdApplicazione") && IdApplicazione != -1)
            {
                parameters.Add("@IdApplicazione", IdApplicazione);
            }
            if (!parameters.ContainsKey("@IdUtente") && IdUtente != -1)
            {
                parameters.Add("@IdUtente", IdUtente);
            }
            if (!parameters.ContainsKey("@Data") && DataAttiva != DateTime.MinValue)
            {
                parameters.Add("@Data", DataAttiva.ToString("yyyyMMdd"));
            }

            try
            {
                SqlCommand cmd = _cmd.SqlCmd(storedProcedure, parameters, timeout);
                cmd.ExecuteNonQuery();
                return(cmd.Parameters[0].Value.Equals(0));
            }
            catch (TimeoutException)
            {
                return(false);
            }
            catch (SqlException e)
            {
                System.Windows.Forms.MessageBox.Show(e.Message);
                return(false);
            }
        }
Пример #2
0
        /// <summary>
        /// Funzione per l'esecuzione di una stored procedure di selezone di valori. Restituisce una tabella contenente i record restituiti dal comando.
        /// </summary>
        /// <param name="cmd">Comando con cui eseguire la stored procedure.</param>
        /// <param name="storedProcedure">Nome della stored procedure.</param>
        /// <param name="parameters">Parametri della stored procedure.</param>
        /// <param name="timeout">Timeout di esecuzione.</param>
        /// <param name="logEnabled">Flag per attivare disattivare il log (usa spInsertLog che deve essere definita nello schema in uso!!).</param>
        /// <returns>Tabella contenente i valori restituiti dalla stored procedure.</returns>
        private DataTable Select(Command cmd, string storedProcedure, QryParams parameters, int timeout = 300, bool logEnabled = true)
        {
            if (!parameters.ContainsKey("@IdApplicazione") && IdApplicazione != -1)
            {
                parameters.Add("@IdApplicazione", IdApplicazione);
            }
            if (!parameters.ContainsKey("@IdUtente") && IdUtente != -1)
            {
                parameters.Add("@IdUtente", IdUtente);
            }
            if (!parameters.ContainsKey("@Data") && DataAttiva != DateTime.MinValue)
            {
                parameters.Add("@Data", DataAttiva.ToString("yyyyMMdd"));
            }

            try
            {
                DataTable dt = new DataTable();

                using (SqlDataReader dr = cmd.SqlCmd(storedProcedure, parameters, timeout).ExecuteReader())
                {
                    dt.Load(dr);
                }
                return(dt);
            }
            catch (SqlException)
            {
                if (logEnabled && OpenConnection())
                {
                    //nel caso spInsertLog (definita solo per PSO ma non per RiMoST ad esempio) non sia definita, va in errore
                    try { Insert("spInsertLog", new QryParams()
                        {
                            { "@IdTipologia", TipologiaLOG.LogErrore }, { "@Messaggio", "Core.DataBase.Select[" + storedProcedure + "," + parameters + "]" }
                        }); }
                    catch {}
                    CloseConnection();
                }
                return(null);
            }
            catch (InvalidOperationException) { return(null); }
        }
Пример #3
0
        public bool Insert(string storedProcedure, QryParams parameters, out Dictionary <string, object> outParams, int timeout = 300)
        {
            if (!parameters.ContainsKey("@IdApplicazione") && IdApplicazione != -1)
            {
                parameters.Add("@IdApplicazione", IdApplicazione);
            }
            if (!parameters.ContainsKey("@IdUtente") && IdUtente != -1)
            {
                parameters.Add("@IdUtente", IdUtente);
            }
            if (!parameters.ContainsKey("@Data") && DataAttiva != DateTime.MinValue)
            {
                parameters.Add("@Data", DataAttiva.ToString("yyyyMMdd"));
            }

            try
            {
                SqlCommand cmd = _cmd.SqlCmd(storedProcedure, parameters, timeout);
                cmd.ExecuteNonQuery();
                outParams = new Dictionary <string, object>();

                foreach (SqlParameter par in cmd.Parameters)
                {
                    if (par.Direction == ParameterDirection.InputOutput || par.Direction == ParameterDirection.Output || par.Direction == ParameterDirection.ReturnValue)
                    {
                        outParams.Add(par.ParameterName, par.Value);
                    }
                }
                return(true);
            }
            catch (TimeoutException)
            {
                outParams = null;
                return(false);
            }
        }