Skip to content

Instantly share code, notes, and snippets.

@ernado-x
Created September 11, 2016 16:03
Show Gist options
  • Save ernado-x/2aabda663bdc2b66b72fafd0e4cad71e to your computer and use it in GitHub Desktop.
Save ernado-x/2aabda663bdc2b66b72fafd0e4cad71e to your computer and use it in GitHub Desktop.
Small class for making SQL calls to SQL Server from .NET Core
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
namespace Core.Data
{
/// <summary>
///
/// </summary>
public class Database
{
private readonly String _connectionString;
public Database(string connectionString)
{
_connectionString = connectionString;
}
public Object ExecuteScalar(string sql, Dictionary<String, Object> parameters = null)
{
using (var connection = new SqlConnection(_connectionString))
{
var command = CreateCommand(connection, sql, parameters);
connection.Open();
var result = command.ExecuteScalar();
connection.Close();
return result;
}
}
public void ExecuteNonQuery(string sql, Dictionary<String, Object> parameters = null)
{
using (var connection = new SqlConnection(_connectionString))
{
var command = CreateCommand(connection, sql, parameters);
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
}
public IEnumerable<T> Execute<T>(string sql, Func<IDataReader, T> map, Dictionary<String, Object> parameters = null)
{
var result = new List<T>();
using (var connection = new SqlConnection(_connectionString))
{
var command = CreateCommand(connection, sql, parameters);
connection.Open();
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
if (map != null)
{
result.Add(map(reader));
}
}
}
connection.Close();
}
return result;
}
private SqlCommand CreateCommand(SqlConnection connection, String sql, Dictionary<String, Object> parameters = null)
{
var command = new SqlCommand(sql, connection);
if (parameters != null)
{
foreach (var p in parameters)
{
command.Parameters.Add(new SqlParameter
{
ParameterName = p.Key,
Value = p.Value
});
}
}
return command;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment