Skip to content

Instantly share code, notes, and snippets.

@crystianwendel
Last active April 23, 2024 20:41
Show Gist options
  • Star 13 You must be signed in to star a gist
  • Fork 10 You must be signed in to fork a gist
  • Save crystianwendel/f7a4aafadccac8d6aa22 to your computer and use it in GitHub Desktop.
Save crystianwendel/f7a4aafadccac8d6aa22 to your computer and use it in GitHub Desktop.
DB Helper Class in C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Collections.Specialized;
namespace Helpers
{
public static class DBHelper
{
#if DEBUG
private static string defaultConnectionString = "Data Source=localhost;Initial Catalog=GLOBOBH_MapaAntenas;Integrated Security=SSPI";
#else
private static string defaultConnectionString = "";
#endif
public static string DefaultConnectionString {
get {
return defaultConnectionString;
}
}
public static DataTable ExecuteProcedure(string PROC_NAME, params object[] parameters)
{
try
{
if (parameters.Length % 2 != 0)
throw new ArgumentException("Wrong number of parameters sent to procedure. Expected an even number.");
DataTable a = new DataTable();
List<SqlParameter> filters = new List<SqlParameter>();
string query = "EXEC " + PROC_NAME;
bool first = true;
for (int i = 0; i < parameters.Length; i += 2)
{
filters.Add(new SqlParameter(parameters[i] as string, parameters[i + 1]));
query += (first ? " " : ", ") + ((string)parameters[i]);
first = false;
}
a = Query(query, filters);
return a;
}
catch (Exception ex)
{
throw ex;
}
}
public static DataTable ExecuteQuery(string query, params object[] parameters)
{
try
{
if (parameters.Length % 2 != 0)
throw new ArgumentException("Wrong number of parameters sent to procedure. Expected an even number.");
DataTable a = new DataTable();
List<SqlParameter> filters = new List<SqlParameter>();
for (int i = 0; i < parameters.Length; i += 2)
filters.Add(new SqlParameter(parameters[i] as string, parameters[i + 1]));
a = Query(query, filters);
return a;
}
catch (Exception ex)
{
throw ex;
}
}
public static int ExecuteNonQuery(string query, params object[] parameters)
{
try
{
if (parameters.Length % 2 != 0)
throw new ArgumentException("Wrong number of parameters sent to procedure. Expected an even number.");
List<SqlParameter> filters = new List<SqlParameter>();
for (int i = 0; i < parameters.Length; i += 2)
filters.Add(new SqlParameter(parameters[i] as string, parameters[i + 1]));
return NonQuery(query, filters);
}
catch (Exception ex)
{
throw ex;
}
}
public static object ExecuteScalar(string query, params object[] parameters)
{
try
{
if (parameters.Length % 2 != 0)
throw new ArgumentException("Wrong number of parameters sent to query. Expected an even number.");
List<SqlParameter> filters = new List<SqlParameter>();
for (int i = 0; i < parameters.Length; i += 2)
filters.Add(new SqlParameter(parameters[i] as string, parameters[i + 1]));
return Scalar(query, filters);
}
catch (Exception ex)
{
throw ex;
}
}
#region Private Methods
private static DataTable Query(String consulta, IList<SqlParameter> parametros)
{
try
{
DataTable dt = new DataTable();
SqlConnection connection = new SqlConnection(defaultConnectionString);
SqlCommand command = new SqlCommand();
SqlDataAdapter da;
try
{
command.Connection = connection;
command.CommandText = consulta;
if (parametros != null)
{
command.Parameters.AddRange(parametros.ToArray());
}
da = new SqlDataAdapter(command);
da.Fill(dt);
}
finally
{
if (connection != null)
connection.Close();
}
return dt;
}
catch (Exception)
{
throw;
}
}
private static int NonQuery(string query, IList<SqlParameter> parametros)
{
try
{
DataSet dt = new DataSet();
SqlConnection connection = new SqlConnection(defaultConnectionString);
SqlCommand command = new SqlCommand();
try
{
connection.Open();
command.Connection = connection;
command.CommandText = query;
command.Parameters.AddRange(parametros.ToArray());
return command.ExecuteNonQuery();
}
finally
{
if (connection != null)
connection.Close();
}
}
catch (Exception ex)
{
throw ex;
}
}
private static object Scalar(string query, List<SqlParameter> parametros)
{
try
{
DataSet dt = new DataSet();
SqlConnection connection = new SqlConnection(defaultConnectionString);
SqlCommand command = new SqlCommand();
try
{
connection.Open();
command.Connection = connection;
command.CommandText = query;
command.Parameters.AddRange(parametros.ToArray());
return command.ExecuteScalar();
}
finally
{
if (connection != null)
connection.Close();
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}
}
@lemusthelroy
Copy link

Hey, this looks really helpful. Is there any documentation you can point me towards for the 'params object[]' that needs to be passed to a procedure?

@ajaykotnala
Copy link

hey this is really helpful but i am kind of struggling with the same issue as lemusthelroy.
Is there any documentation you can point me towards for the 'params object[]' that needs to be passed to a procedure?

@ali-heydari-1989
Copy link

Finally, find the solution for this helper, Actually I had a helper, was too lazy for finding, I started to use this one, then i became too lazy to delete it,
then I decide to find out how it works.
for parameters just send them as a object like this

`string query = @"insert into importEmailState
(Emailserver,fromDate,lastUpdate)
values (@emailserver,@fromDate,@lastupdate)";

        object[] param = { "@Emailserver",insertobject.Emailserver,
                           "@fromDate", insertobject.fromDate,
                           "@lastUpdate",insertobject.lastUpdate   };


        int resualt = DBHelper.ExecuteNonQuery(query, param);

`

@Chintan5384
Copy link

really useful

@MarioRamosEs
Copy link

Nice!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment