Prezado(a) leitor(a), hoje eu vou falar e mostrar como fazer um like no banco de dados. Essa é a forma que uso no dia a dia e ao mesmo tempo seguro para evitar “scripts” maldosos.  Eu usei “SQLCommand” e “IDataParameter” com o comando “Select” e “like”

Já estou a vários dias preparando esse artigo e procurando passar o melhor para você leitor(a) e programador(a).


Referência:

Ferramenta: Visual Studio 

Linguagem: C#

Camada de dados

Banco de dados SQL Server, MySQL, Oracle e mais


A camada de acesso a dados deve ser sempre protegida, eu mesmo crio classes do tipo internas quando se trata de acesso a dados, por exemplo: “internal class…”. Quando você vai criar um sistema com camadas, é interessante definir as camadas de forma correta e ao mesmo tempo respeitar o que foi definido. O MVC (http://en.wikipedia.org/wiki/MVC_Pattern) é uma forma muito boa de separar as camadas e aproveitando códigos já escritos.


O mesmo código escrito para um site pode ser aproveitado para ser escrito para um aplicativo móvel, lógico que falando da camada de dados e regra de negócio. As camadas de “design” são diferentes e precisam ser re-escritas.


O primeiro passo para a criação do código é saber o que precisa realmente buscar do banco de dados. No meu caso, quero buscar o nome e e-mail e pra isso é necessário executar o primeiro comando, chamado “select”.


Referência 1.1 - SELECT

StringBuilder str = new StringBuilder();

str.Append(@"SELECT

                        Nome, Email

                        FROM

                        Aluno");

str.Append(@" AND Nome like @nome ");

str.Append(@" Order by Nome ");


A referência 1.1 mostra que estou utilizando o comando “StringBuilder” para armazenar as “strings” que serão enviadas para a execução no banco de dados. Depois do comando criado, temos que executar a instrução e pra isso, existem outros comandos. Lembro que, a melhor forma de passar parâmetro para o banco de dados é utilizando parâmetro sem aspas. Por isso coloquei o @nome depois do “like”.


Referência 1.2 - Passando o valor

SqlCommand dbCommand = new SqlCommand(str.ToString());

dbCommand.CommandType = CommandType.Text;


IDataParameter nome = new SqlParameter();

nome.ParameterName = "@nome";

nome.Value = "%" + dto.nome + "%";

nome.DbType = System.Data.DbType.String;

dbCommand.Parameters.Add(nome);


database.GetSourceConnection();

return database.ExecutaDataSetParameter(dbCommand).Tables[0];


A referência 1.2 mostra como passar o parâmetro para o banco de dados utilizando arroba no e passando o valor pelo “IDataParameter”. Note que para o like, é necessário colocar o “%” porcento antes e depois do valor. O porcento antes busca as últimas palavras do campo (no meu caso Nome) e o “%” porcento depois busca os primeiros valores do campo Nome.


Na continuação do método, existem os métodos GetSourceConnection() e o executaDataSetParameter, específicos do meu “framework”, fiz um para acesso a dados, ou seja, para acesso ao banco de dados SQL Server ou qualquer outro que houver.

O próximo exemplo que vou dar é passar o “%” porcento dentro da instrução SQL e antes de informar o valor do parâmetro, isto é, diferente do primeiro exemplo referência 1.2. Primeiro de tudo você cria a “StringBuilder” e depois constrói a instrução.


Referência 1.3 - Novo exemplo

StringBuilder str = new StringBuilder();

str.Append(@"SELECT

                        Nome, Email

                        FROM

                        Aluno");

str.Append(@" AND Nome like %@nome% ");

str.Append(@" Order by Nome ");


SqlCommand dbCommand = new SqlCommand(str.ToString());

dbCommand.CommandType = CommandType.Text;


IDataParameter nome = new SqlParameter();

nome.ParameterName = "@nome";

nome.Value = dto.nomeMembro;

nome.DbType = System.Data.DbType.String;

dbCommand.Parameters.Add(nome);


database.GetSourceConnection();

return database.ExecutaDataSetParameter(dbCommand).Tables[0];


A única mudança realizada no exemplo 1.3 está na segunda linha de código cujo o porcento está na instrução de comando para envio ao banco de dados. A grande vantagem de usar qualquer um dos dois exemplos é não usar aspas simples ou aspas na instrução de comando SELECT. Você sabia que o uso das aspas pode facilitar a invasão através do seu sistema usando apenas jogo de aspas simples com duplas? As formas mostradas anteriormente resolve esse problema de forma simples e tranquila.


Espero que tenham gostado do artigo e qualquer dúvida favor entrar em contato através do site www.mauriciojunior.org

Até a próxima.