/// <summary> /// Renvoie le dataset, mais en renommant les tables avec les infos fournies dans la première table ! /// La première table (table[0]) doit contenir les colonnes index et name : /// Index de la table dans le Dataset /// Name nom à attribuer à l'objet DataTable du DataSet /// Le nombre de lignes de la première table doit correspondre au nombre de de tables renvoyées (Table 0 incluse !) /// Ex : Pour renvoyer 3 tables documentées (Table1, Table 2, table 3), /// il faut insérer une table "0" qui contiendra 4 lignes : 0, 'Documentation' UNION 1, 'Table1' UNION 2, 'Table 2' UNION 3, 'table 3' /// </summary> /// <param name="commandText">le sql ou le nom de la procédure stockée</param> /// <param name="commandType">Le type de commande</param> /// <param name="parameters">Les paramètres de la requête</param> /// <param name="timeOut">Le temps d'exécution alloué uniquement pour cette requete (en ms)</param> /// <returns>Le dataset</returns> public DataSet ExecuteDataSetWithTableName(string commandText, CommandType commandType = CommandType.Text, IEnumerable <SqlParameter> parameters = null, int?timeOut = null) { DataSet dst = this.ExecuteDataSet(commandText, commandType, parameters, timeOut); if (dst != null && dst.Tables.Count > 1 && dst.Tables[0].Rows.Count >= dst.Tables.Count) { // les conditions sont remplies : la première table décrit les autres tables if (dst.Tables[0].Columns.Contains("Index") && dst.Tables[0].Columns.Contains("Name")) { // la première table a les bonnes infos int index; string name; foreach (DataRow r in dst.Tables[0].Rows) { index = ConnectionParam.ConvertToInt(r["Index"], 0); if (index >= 0 && index < dst.Tables.Count) { name = ConnectionParam.ConvertToString(r["Name"], string.Empty); if (!string.IsNullOrWhiteSpace(name)) { dst.Tables[index].TableName = name; } } } } } return(dst); }
/// <summary> /// Exécute une requête et renvoie un entier /// </summary> /// <param name="commandText">le sql ou le nom de la procédure stockée</param> /// <param name="defaultValue">Valeur par défaut appliquée si la requête renvoie un truc null</param> /// <param name="commandType">Le type de commande</param> /// <param name="parameters">Les paramètres de la requête</param> /// <param name="timeOut">Le temps d'exécution alloué uniquement pour cette requete (en ms)</param> /// <returns>Un entier ou la valeur par défaut</returns> public int ExecuteGetId(string commandText, int defaultValue, CommandType commandType = CommandType.Text, IEnumerable <SqlParameter> parameters = null, int?timeOut = null) { return(ConnectionParam.ConvertToInt(this.ExecuteScalar(commandText, commandType, parameters, timeOut), defaultValue)); }