none
Lista com parametros biblioteca 3 camadas e StoreProcedure SQL Server RRS feed

  • Pergunta

  • essoal, tenho uma biblioteca que utilizo para meus projetos. Tal biblioteca foi implementada para ser usada em 3 camadas. Porem preciso utiliza-la para execução de algumas procedures 
    porem, nao sei como passar uma lista de parametros a ser utilizada pelas procedures do bd, ou seja, andei realizando alguns estudos e verifiquei que geralmente,quando o prograador usa parametros é feito mais ou menos assim:

    SqlCommand cmd = new SqlCommand("pInsert",cnn);
    cmd.Parameters.AddWithValue("@name,_name);
    cmd.Parameters.AddWithValue("@lastname,_lastname);
    (...)

    minha intenção é fazer da seguinte maneira, passar todos parametros juntamente com seu respectivo valor, de forma que dentro das minhas funções eu faça a leitura desses parametros e valores e executo de dentro da função, porem nao consegui um jeito para fazer isto...
    Um exemplo mais pratico de como quero fazer: 

    //FUNÇÃO INTERNA PARA EXECUÇÃO 
    private SqlCommand SQL(string NameProcedure, >>ListaParametros<<) 
            {
                if (NameProcedure != string.Empty)
                {
                    try
                    {
                        using (cmd = new SqlCommand(NameProcedure, AbrirBanco()))
                        {
                            //  cmd.Connection = AbrirBanco();
                            cmd.CommandType = CommandType.StoredProcedure;

    >>PROCESSAMENTO DOS PARAMETROS<<
    <Não sei como implementar>
                        }
                    }
                    //Caso ocorra algum erro, o metodo catch irá informar qual o erro
                    catch (SqlException ex)
                    {
                        //Retorna o erro apontado
                        throw ex;
                        
                    }
                }
                return cmd;
            }
    //Função usada pelas outras classes para passar parameotrs SQL
    public void MontarSQL(string NameProcedure, >>ListaParametros<<) bool UseProcedure)
            {
                if (NameProcedure != string.Empty)
                {
                    try
    SQL(NameProcedure,>>ListaParametros<<)true).ExecuteNonQuery();
                    catch (SqlException ex)
    throw ex;
                    finally
    FecharBanco(cnn);                
                }
            }
    quinta-feira, 17 de dezembro de 2015 22:36

Respostas

  • Pessoal, depois de uma longa conversa com um amigo, o mesmo me deu algumas ideias de como fazer a solicitação acima... Segue o código para quem quiser aprender  como eu..

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    using System.Web.Configuration;


    namespace ComandoSQLSever
    {
        public class ComandoSQLSever
        {

            private SqlCommand cmd { get; set; }
            private SqlConnection cnn { get; set; }


            public string ConnectionStringsWebConfig { get; set; }


            public ComandoSQLSever()
            {
                cnn = new SqlConnection(ConnectionStringsWebConfig);
            }

            public ComandoSQLSever(string ConnectionStringsWebConfig)
            {
                this.ConnectionStringsWebConfig = ConnectionStringsWebConfig;
                cnn = new SqlConnection(this.ConnectionStringsWebConfig);
            }

            /// <summary>
            /// Realiza abertura do Banco de dados
            /// </summary>
            private void AbrirBanco()
            {
                if (this.cnn.State == ConnectionState.Closed)
                    this.cnn.Open();
            }

            /// <summary>
            /// Realiza o fechamento seguro da conexao com o banco.
            /// </summary>
            private void FecharBanco()
            {
                this.cnn.Close();
            }

            private void SQL(SqlCommand cmd)
            {
                cmd.ExecuteNonQuery();
            }

            private void SQL(string sql)
            {
                if (sql != string.Empty)
                {
                    Exception erro = null;
                    try
                    {
                        this.AbrirBanco();
                        cmd = this.cnn.CreateCommand();
                        cmd.CommandText = sql;
                        this.SQL(cmd);
                        this.FecharBanco();
                    }
                    catch (Exception ex)
                    {
                        erro = ex;
                    }

                    if (erro != null)
                        throw erro;
                }
            }
            private void SQL(string sql, params SqlParameter[] parameters)
            {
                if (sql != string.Empty)
                {
                    Exception erro = null;
                    try
                    {
                        this.AbrirBanco();
                        cmd = this.cnn.CreateCommand();
                        cmd.CommandText = sql;
                        cmd.Parameters.AddRange(parameters);
                        this.SQL(cmd);
                        //this.FecharBanco();
                    }
                    catch (Exception ex)
                    {
                        erro = ex;
                    }

                    if (erro != null)
                        throw erro;
                }
            }

            private SqlCommand Read(string sql)
            {
                if (sql != string.Empty)
                {
                    Exception erro = null;
                    try
                    {
                        this.AbrirBanco();
                        cmd = this.cnn.CreateCommand();
                        cmd.CommandText = sql;
                        //cmd.ExecuteReader();
                        //this.FecharBanco();
                    }
                    catch (Exception ex)
                    {
                        erro = ex;
                    }

                    if (erro != null)
                        throw erro;
                }
                return cmd;
            }
            private SqlCommand Read(string sql, params SqlParameter[] parameters)
            {
                if (sql != string.Empty)
                {
                    Exception erro = null;
                    try
                    {
                        this.AbrirBanco();
                        cmd = this.cnn.CreateCommand();
                        cmd.CommandText = sql;
                        cmd.Parameters.AddRange(parameters);
                        //cmd.ExecuteReader();
                        //this.FecharBanco();
                    }
                    catch (Exception ex)
                    {
                        erro = ex;
                    }

                    if (erro != null)
                        throw erro;
                }
                return cmd;
            }

            /// <summary>
            /// Método que executa os comandos em SQL, como Insert, Update, Delete     
            /// </summary>
            /// <param name="sql">Passa-se uma string no formato em SQL ( {Insert into}--{Update set}--{Delete from}</param>
            public void ExecuteNonQuery(string sql)
            {
                try
                {
                    SQL(sql);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    FecharBanco();
                }
            }

            /// <summary>
            /// Método que executa os comandos em SQL, como Insert, Update, Delete
            /// </summary>
            /// <param name="sql">Passa-se uma string no formato em SQL ( {Insert into}--{Update set}--{Delete from}</param>
            /// <param name="parameters">Parametros</param>
            public void ExecuteNonQuery(string sql, params SqlParameter[] parameters)
            {
                try
                {
                    SQL(sql, parameters);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    FecharBanco();
                }
            }

            /// <summary>
            /// 
            /// </summary>
            /// <param name="sql"></param>
            /// <returns></returns>
            public IDataReader IDataReader(string sql)
            {
                IDataReader dr = Read(sql).ExecuteReader();

                return dr;
            }
            public IDataReader IDataReader(string sql, params SqlParameter[] parameters)
            {
                IDataReader dr = Read(sql, parameters).ExecuteReader();

                return dr;
            }
            public DataSet DataSet(string sql)
            {
                SqlDataReader dr = Read(sql).ExecuteReader();
                DataTable dt = new DataTable();
                dt.Load(dr);
                DataSet ds = new DataSet();
                ds = new DataSet();
                ds.Tables.Add(dt);
                return ds;
            }
            public DataSet DataSet(string sql, params SqlParameter[] parameters)
            {
                SqlDataReader dr = Read(sql, parameters).ExecuteReader();
                DataTable dt = new DataTable();
                dt.Load(dr);
                DataSet ds = new DataSet();
                ds = new DataSet();
                ds.Tables.Add(dt);
                return ds;
            }
           
        }
    }

    • Marcado como Resposta Nelson_lucas sexta-feira, 18 de dezembro de 2015 04:31
    sexta-feira, 18 de dezembro de 2015 04:30