/// <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); } }
/// <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); }
/// <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); }
/// <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); } }
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); } }
/// <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)); }
/// <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)); }
public DataTable Select(string storedProcedure, int timeout = 300) { QryParams parameters = new QryParams(); return(Select(storedProcedure, parameters, timeout)); }
/// <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)); }