Example #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);
            }
        }
Example #2
0
        /// <summary>
        /// Dalla stringa di parametri del tipo "@param1=val1;@param2=val2;..." isola i singoli parametri e restituisce la lista QryParams.
        /// </summary>
        /// <param name="parameters">Stringa di parametri.</param>
        /// <returns>Lista di parametri.</returns>
        private QryParams getParamsFromString(string parameters)
        {
            Regex           regex      = new Regex(@"@\w+[=:][^;:=]+");
            MatchCollection paramsList = regex.Matches(parameters);
            Regex           split      = new Regex("[=:]");
            QryParams       o          = new QryParams();

            foreach (Match par in paramsList)
            {
                string[] keyVal = split.Split(par.Value);
                if (keyVal.Length != 2)
                {
                    throw new InvalidExpressionException("The provided list of parameters is invalid.");
                }
                o.Add(keyVal[0], keyVal[1]);
            }
            return(o);
        }
Example #3
0
        /// <summary>
        /// Restituisce il comando SQL. Accetta una lista di parametri.
        /// </summary>
        /// <param name="commandText">Testo del comando.</param>
        /// <param name="commandType">Tipo di comando.</param>
        /// <param name="parameters">Lista di parametri.</param>
        /// <param name="timeout">Timeout di esecuzione.</param>
        /// <returns>Comando SqlCommand.</returns>
        public SqlCommand SqlCmd(string commandText, CommandType commandType, QryParams parameters, int timeout = 300)
        {
            SqlCommand cmd = SqlCmd(commandText, commandType, timeout);

            try
            {
                SqlCommandBuilder.DeriveParameters(cmd);
                foreach (SqlParameter par in cmd.Parameters)
                {
                    if (parameters.ContainsKey(par.ParameterName))
                    {
                        par.Value = parameters[par.ParameterName];
                    }
                }
            }
            catch (Exception)
            {
            }
            return(cmd);
        }
Example #4
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); }
        }
Example #5
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);
            }
        }
Example #6
0
 /// <summary>
 /// Restituisce il comando SQL presupponendo si tratti di una stored procedure. Accetta una lista di parametri.
 /// </summary>
 /// <param name="commandText">Testo del comando.</param>
 /// <param name="parameters">Lista di parametri.</param>
 /// <param name="timeout">Timeout di esecuzione.</param>
 /// <returns>Comando SqlCommand.</returns>
 public SqlCommand SqlCmd(string commandText, QryParams parameters, int timeout = 300)
 {
     return(SqlCmd(commandText, CommandType.StoredProcedure, parameters, timeout));
 }
Example #7
0
 /// <summary>
 /// Funzione per l'esecuzione di una stored procedure di cancellazione (solo mnemonico, esegue funzione insert).
 /// </summary>
 /// <param name="storedProcedure">Nome della stored procedure.</param>
 /// <param name="parameters">Parametri richiesti dalla stored procedure.</param>
 /// <param name="timeout">Time out di esecuzione della stored procedure.</param>
 /// <returns>Restituisce true se la query è andata a buon fine, false se è andata in timeout.</returns>
 public bool Delete(string storedProcedure, QryParams parameters, int timeout = 300)
 {
     return(Insert(storedProcedure, parameters, timeout));
 }
Example #8
0
        public DataTable Select(string storedProcedure, int timeout = 300)
        {
            QryParams parameters = new QryParams();

            return(Select(storedProcedure, parameters, timeout));
        }
Example #9
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="storedProcedure">Nome della stored procedure.</param>
 /// <param name="parameters">Parametri richiesti dalla stored procedure.</param>
 /// <param name="timeout">Time out di esecuzione della stored procedure.</param>
 /// <returns>Tabella contenente i record restituiti dalla stored procedure.</returns>
 public DataTable Select(string storedProcedure, QryParams parameters, int timeout = 300)
 {
     return(Select(_cmd, storedProcedure, parameters, timeout));
 }