using System; static public class extensions { static public bool SetIfExists(this System.Data.SqlClient.SqlCommand cmd, string paramname, object value) { bool found = true; if (value == null) value = DBNull.Value; if (cmd.Parameters.Contains(paramname)) cmd.Parameters[paramname].Value = value; else { if (paramname[0] != '@') paramname = "@" + paramname; else paramname = paramname.Substring(1); if (cmd.Parameters.Contains(paramname)) cmd.Parameters[paramname].Value = value; else found = false; } return found; } static public bool SetIntParam(this System.Data.SqlClient.SqlCommand c, string paramname, string value) { bool found = true; object ovalue; if (int.TryParse(value, out int ivalue)) ovalue = ivalue; else ovalue = DBNull.Value; if (!c.Parameters.Contains(paramname)) { if (paramname[0] != '@') paramname = "@" + paramname; else paramname = paramname.Substring(1); found = c.Parameters.Contains(paramname); } if (found) c.Parameters[paramname].Value = ovalue; return found; } static public bool SetIntParam(this System.Data.SqlClient.SqlCommand c, string paramname, int? value) { bool found = true; object ovalue; if (value.HasValue) ovalue = value.Value; else ovalue = DBNull.Value; if (!c.Parameters.Contains(paramname)) { if (paramname[0] != '@') paramname = "@" + paramname; else paramname = paramname.Substring(1); found = c.Parameters.Contains(paramname); } if (found) c.Parameters[paramname].Value= ovalue; return found; } static public bool SetStringParam(this System.Data.SqlClient.SqlCommand c, string paramname, string value) { bool found = true; object ovalue ; if (string.IsNullOrEmpty(value)) ovalue = DBNull.Value; else ovalue = value; if (!c.Parameters.Contains(paramname)) { if (paramname[0] != '@') paramname = "@" + paramname; else paramname = paramname.Substring(1); found = c.Parameters.Contains(paramname); } c.Parameters[paramname].Value = ovalue; return found; } static public bool SetBoolParam(this System.Data.SqlClient.SqlCommand c, string paramname, bool value) { bool found = true; if (c.Parameters.Contains(paramname)) c.Parameters[paramname].Value = value; else { if (paramname[0] != '@') paramname = "@" + paramname; else paramname = paramname.Substring(1); if (c.Parameters.Contains(paramname)) c.Parameters[paramname].Value = value; else found = false; } return found; } static public bool SetBoolParam(this System.Data.SqlClient.SqlCommand c, string paramname, bool value, LSWLib.CLog spl=null ) { const string module = "SetBoolParam"; bool found = true; if (c.Parameters.Contains(paramname)) c.Parameters[paramname].Value = value; else { if (paramname[0] != '@') paramname = "@" + paramname; else paramname = paramname.Substring(1); if (c.Parameters.Contains(paramname)) c.Parameters[paramname].Value = value; else found = false; } if (!found && spl != null) spl.WriteSplunkLog(module,null, LSWLib.CLog.iseverity.err, paramname); return found; } public static bool BoolOrDefault( this System.Data.SqlClient.SqlDataReader rs, string colName, bool defaultValue) { bool rv = defaultValue; try { int c = rs.GetOrdinal(colName); if (!rs.IsDBNull(c)) rv = rs.GetBoolean(c); } catch { rv = defaultValue; } return rv; } public static byte ByteOrDefault(this System.Data.SqlClient.SqlDataReader rs, string colName, byte defaultValue) { byte rv = defaultValue; try { int c = rs.GetOrdinal(colName); if (!rs.IsDBNull(c)) rv = rs.GetByte(c); } catch { rv = defaultValue; } return rv; } public static int IntOrDefault(this System.Data.SqlClient.SqlDataReader rs, string colName, int defaultValue) { int rv = defaultValue; try { int c = rs.GetOrdinal(colName); if (!rs.IsDBNull(c)) rv = rs.GetInt32(c); } catch { rv = defaultValue; } return rv; } public static string StringOrDefault(this System.Data.SqlClient.SqlDataReader rs, string colName, string defaultValue) { string rv = defaultValue; try { int c = rs.GetOrdinal(colName); if (!rs.IsDBNull(c)) rv = rs.GetString(c); } catch { rv = defaultValue; } return rv; } public static int IntOrDefault(this System.Data.DataRow dr, string colName, int iDefault) { int value; int ci = dr.Table.Columns.IndexOf(colName); if (ci >= 0 && dr[ci] is int) value = (int)dr[ci]; else value = iDefault; return value; } public static int? IntOrNull(this System.Data.DataRow dr, string colName) { int? value; int ci = dr.Table.Columns.IndexOf(colName); if (ci >= 0 && dr[ci] is int?) value = (int ?)dr[ci]; else value = null; return value; } public static bool BoolOrFalse(this System.Data.DataRow dr, string colName) { bool value; int ci = dr.Table.Columns.IndexOf(colName); if (ci >= 0) { switch (dr[ci]) { case bool b: value = b; break; case int i: value = i != 0; break; default: value = false; break; } } else value = false; return value; } public static double? DoubleOrNull(this System.Data.DataRow dr, string colName) { double? value; int ci = dr.Table.Columns.IndexOf(colName); if (ci >= 0) { switch (dr[ci]) { case decimal d: value = (double)d; break; case double df: value = df; break; case float ff: value = (double)ff; break; default: value = null; break; } } else value = null; return value; } }