Neste artigo, irei abordar a criação de uma classe em C# para geração de comandos SQL, tornando mais ágil a criação dos comandos de “Insert”, “Update”, “Select” e “Delete” no banco sem a necessidade de escrever sempre o comando, evitando assim possíveis erros de digitação. Imagine a seguinte situação:

Uma aplicação possui vários cadastros (Clientes, Fornecedores, Produtos, Grupos, Lojas, Usuários, etc...) sendo que cada cadastro possui, pesquisa, inserção, edição e exclusão. Já imaginou quantos comandos “Select”, “Insert”, “Update” e “Delete” você teria que codificar. Com a utilização de uma classe para geração desses comandos que será chamada de “clsSQLCreator”, esse procedimento se tornara mais ágil e com menor chances de ocorrerem erros de sintaxe, pois os comandos somente serão digitados uma única vez.

Vamos ao que interessa, o desenvolvimento da classe:

1º Passo: Crie um novo projeto no Visual Studio(File>New Project>Console Application) com o nome de “SqlCreator” em seguida crie uma nova classe(Project>Add Class) com o nome de “clsSQLCreator”.

2º Passo: Declaração dos Atributos

   //Atributos

  private string tabela;

  private StringBuilder csql;

  private ArrayList campos = new ArrayList();

  private ArrayList valores = new ArrayList();

  private ArrayList where = new ArrayList();

Utilizaremos ArrayList para armazenar os campos, valores e clausula where adicionados ao “SQLCreator”, o ArrayList foi escolhido pois possui tamanho dinamico, não sendo necessario especificar a quantidade de itens que serão armazenados no Array

3º Passo: Construtor da Classe

 //Construtor da Classe

 public clsSqlCreator(string tabela)

 {

    this.tabela = tabela;

 }

O Construtor recebe uma string com o nome da tabela do onde será realizada a operação.

4º Passo: Criação dos Métodos para Adicionar campos, valores e clausula where a classe.

       

  //Método para adicionar campo e valor(Inserção e Edição)

        public void addCampo(string nome, string valor)

        {

            campos.Add(nome);

            valores.Add(valor);

        }

 

        //Método para adicionar campo(Utilizado p/ Pesquisa)

        public void addCampo(string nome)

        {

            addCampo(nome, string.Empty);

        }

 

        //Método para adicionar clausula where

        public void addWhere(string nome, string valor)

        {

            if (where.Count == 0)

            {

                where.Add("WHERE " + nome + " = '" + valor + "'");

                return;

            }

            else

            {

                where.Add(where[where.Count - 1] + " AND " + nome +   " = '" + valor + "'");

            }

        }    

 

5º Passo: Criação dos métodos que irão montar e retornar os camandos SQL (Insert, Update, Delete e Select)

 

        //Método que retorna o comando SQL para Inserção de Dados

        public string Insert()

        {

            csql = new StringBuilder();

 

            csql.Append("INSERT INTO ");

            csql.Append(tabela);

            csql.Append(" (");

            //Loop para adicionar todos os campos do ArrayList de Campos

            for (int i = 0; i < campos.Count; i++)

            {

                if(i == campos.Count -1)

                    csql.Append(campos[i]);

                else

                    csql.Append(campos[i] + ",");

            }

            csql.Append(") VALUES(");

            //Loop para adicionar todos os valores do ArrayList de Valores

            for (int i = 0; i < valores.Count; i++)

            {

                if(i == valores.Count - 1)

                    csql.Append("'" + valores[i] + "'");

                else

                    csql.Append("'" + valores[i] + "'" + ",");

            }           

            csql.Append(")");

 

            return csql.ToString();

        }

 

        //Método que Retorna o Comando SQL para Atualização de Dados

        public string Update()

        {

            csql = new StringBuilder();

 

            csql.Append("UPDATE ");

            csql.Append(tabela);

            csql.Append(" SET ");

            //Loop para adicionar todos os campos e valores definidos

            for (int i = 0; i < campos.Count; i++)

            {

                csql.Append(campos[i] + " = '");

                csql.Append(valores[i] + "'");

 

                if (i != campos.Count - 1)

                    csql.Append(",");

            }

 

            if(where.Count != 0)

                csql.Append(" " + where[where.Count - 1]);

 

            return csql.ToString();

        }  

 

        //Método que retorna o comando SQL para exclusão de dados

        public string Delete()

        {

            csql = new StringBuilder();

 

            csql.Append("DELETE FROM ");

            csql.Append(tabela);

 

            if(where.Count != 0)

                csql.Append(" " + where[where.Count - 1]);

 

            return csql.ToString();

        }

 

        //Método que retorna o comando SQL para pesquisa de dados

        public string Select()

        {

            csql = new StringBuilder();

 

            csql.Append("SELECT ");

            //Loop para adicionar todos os campos

            for (int i = 0; i < campos.Count; i++)

            {

                if(i==campos.Count-1)

                    csql.Append(campos[i]);

                else

                    csql.Append(campos[i] + ",");

            }

 

            csql.Append(" FROM " + tabela);

           

            if(where.Count != 0)

                csql.Append(" " + where[where.Count-1]);

 

            return csql.ToString();

        }

Obs: Para Funcionamento do ArrayList será necessario incluir o using abaixo:

using System.Collections;

 

6º Passo: Testando a Classe

Abra a Classe “Program.cs” e inclua o código abaixo no método “main”

clsSqlCreator objSqlCreator;

           

            //Teste Insert

            objSqlCreator = new clsSqlCreator("TB_Teste");

            objSqlCreator.addCampo("ID", "01");

            objSqlCreator.addCampo("NOME", "Felipe");

            Console.WriteLine(objSqlCreator.Insert());

 

            //Teste Update

            objSqlCreator = new clsSqlCreator("TB_Teste");

            objSqlCreator.addCampo("ID", "01");

            objSqlCreator.addCampo("NOME", "Felipe");

            objSqlCreator.addWhere("ID", "01");

            Console.WriteLine(objSqlCreator.Update());

 

            //Teste Delete

            objSqlCreator = new clsSqlCreator("TB_Teste");

            objSqlCreator.addCampo("ID", "01");

            objSqlCreator.addWhere("ID", "01");

            Console.WriteLine(objSqlCreator.Delete());

 

            //Teste Select

            objSqlCreator = new clsSqlCreator("TB_Teste");

            objSqlCreator.addCampo("NOME");

            objSqlCreator.addWhere("ID", "01");

            Console.WriteLine(objSqlCreator.Select());

 

            Console.Read();