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();
}
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();