Thursday, July 9, 2015

ReportingDashboard.Common.SqlCcc.cs

using System.Collections.Generic; // List
using System.Configuration; // ConfigurationManager
using System.Data; // IDataRecord
using System.Text; // StringBuilder
using ReportingDashboard.Interfaces; // ISqlCcc
using System.Data.SqlClient; // SqlConnection, SqlCommand, SqlParameter

namespace ReportingDashboard.Common
{
    public class SqlCcc : ISqlCcc
    {
        #region connection bits
        public string ConnectionStrName
        {
            get { return "Default"; }
        }

        public string ConnectionStr
        {
            get { return ConnStrs[ConnectionStrName].ConnectionString; }
        }

        public ConnectionStringSettingsCollection ConnStrs
        {
            get
            {
                return ConfigurationManager.ConnectionStrings;
            }
        }
        private SqlConnection conn
        {
            get
            {
                return new SqlConnection(ConnectionStr);
            }
        }
        #endregion connection bits

        public int Execute(string commandText, params object[] args)
        {
            using (var connection = conn)
            {
                var command = new SqlCommand(commandText, connection);
                connection.Open();

                var data = command.ExecuteNonQuery();
                return data;
            }
        }

        public List<string> Query(string commandText, params SqlParameter[] parameters)
        {
            using (var connection = conn)
            {
                var command = new SqlCommand(CommandUpdate(commandText), connection);

                foreach (var item in parameters)
                {
                    command.Parameters.Add(item);
                }

                connection.Open();

                var reader = command.ExecuteReader();
                var result = new StringBuilder();
                while (reader.Read())
                {
                    result.Append(((IDataRecord)reader)[0]);
                }
                reader.Close();
                reader.Dispose();

                var o = new List<string> { result.ToString() };
             
                return o;
            }
        }

        private string CommandUpdate(string queryString, params object[] parameters)
        {
            var index = 0;
            var returnedCommandString = queryString;
            foreach (object p in parameters)
            {
                var rs = "N'" + ((p != null) ? p.ToString() : string.Empty) + "'";
                returnedCommandString = returnedCommandString.Replace("@" + index, rs);
                index++;
            }
            return returnedCommandString;
        }
    }
}

No comments:

Post a Comment