Last active
April 23, 2024 20:41
-
-
Save crystianwendel/f7a4aafadccac8d6aa22 to your computer and use it in GitHub Desktop.
DB Helper Class in C#
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
} | |
} |
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?
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);
`
really useful
Nice!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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?