180 lines
6.5 KiB
C#
180 lines
6.5 KiB
C#
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;
|
|
}
|
|
}
|
|
|