Criando uma Classe com Inclusão, Alteração, Consulta e Exclusão com Sql Server em C# - parte 2

Postado por em 22/05/2013 - Visitas: 4694

 

Criação de Classe usando Diagrama de Classes – Parte 2

Após a criação da Classe no artigo anterior (Criação de Classe usando Diagrama de Classes – Parte 1) agora vamos programar os métodos de criação destas classes.

A nossa classe possui os métodos Inserir, alterar, listar, consultar e excluir, portanto para começar a programa-los, vamos editar direto no código fonte, para isto dê um duplo clique no método dentro do Diagrama de Classes, vamos começar pelo método Inserir.

Ao clicar no método inserir, o código fonte será exibido como abaixo

Apague a linha com o comando “throw” e vamos inserir o código abaixo:

public bool inserir()  

   // aqui é criado o método, que possui um retorno "bool" , isto faz com que ele seja obrigado

   // a devolver um resultado "verdadeiro" ou "falso" (true/false)

        {

            SqlConnection con = new SqlConnection("Data Source = LOCALHOST\\SQLEXPRESS;Initial Catalog=BDAULACSHARP;Integrated Security=True;Pooling=False");

      // aqui é criada a conexão com o banco de dados, isto requer que no topo seja adicionado o

        // comando "using System.Data.SqlClient;" para adicionar a biblioteca do sql server

 

            try   // o try faz com que em caso de erros o programa pule para o tratamento no comando Catch

            {

                SqlCommand comando = new SqlCommand();

                // aqui é definido o comando que será executado como uma instância da classe Sqlcommand

                comando.CommandText = "insert into Clientes (nome, telefone, email, cidade, estado, dtnasc)" + "values (@nome, @telefone, @email, @cidade, @estado, @dtnasc)";

                // aqui definimos o texto que contém o comando sql para realizar a inserção

                comando.Parameters.AddWithValue("@nome", this.nome);

                // este é um comando para passagem de parâmetros, onde dentro do comando Sql criado serão

                // substituidas todas as variaveis precedidas de @ pelos valores após a vírgula

                comando.Parameters.AddWithValue("@telefone", this.telefone);

                comando.Parameters.AddWithValue("@email", this.email);

                comando.Parameters.AddWithValue("@cidade", this.cidade);

                comando.Parameters.AddWithValue("@estado", this.estado);

                comando.Parameters.AddWithValue("@dtnasc", this.dtnasc);

                comando.Connection = con;

                // neste comando vinculamos a conexão com o banco de dados que foi criada ao comando

                con.Open();

                // aqui é executada a abertura da conexão

                comando.ExecuteNonQuery();

                // aqui é executado o comando criado, como este comando não retorna uma consulta

                // utilizamos o comando ExecuteNonQuery

                return true;

                // caso o programa tenha chegado até aqui é retornado o valor true pois o mesmo executou

                // com sucesso

            }

            catch (Exception e)   // tratamos o erro caso tenha ocorrido com este comando

            {

                // após o erro tudo que estiver dentro do Catch é executado

                this.msgerro = "Erro " + e.Message.ToString();

                // aqui a variável msgerro recebe a mensagem de erro do comando executado

                // para permitir que seja obtida uma resposta fora da classe para os erros

            }

 

            return false;

            // retornamos falso pois se o programa chegou até aqui significa que houve algum erro

        }

 

Assim o método de inclusão foi criado, agora devemos escrever os outros métodos seguindo a mesma forma, porém cada um com suas regras específicas.

public bool consultar(int codigo)

        // cria-se o método consultar onde o retorno é bool para devolver uma resposta verdadeiro/falso

        // quando executado o método, e o parâmetro código é passado quando solicitada a execução

        // para que a consulta seja referente ao código passado

        {

            SqlConnection con = new SqlConnection("Data Source = LOCALHOST\\SQLEXPRESS;Initial Catalog=BDAULACSHARP;Integrated Security=True;Pooling=False");

            // cria-se o objeto de conexão ao banco de dados

            try

            {

                SqlCommand comando = new SqlCommand();

                comando.CommandText = "select * from Clientes where codigo = @codigo";

                comando.Parameters.AddWithValue("@codigo", codigo);

                comando.Connection = con; // O comando acima faz o vínculo da conexão com o banco através do dele.

                con.Open(); // Abre a conexão com o banco de dados.

                SqlDataReader registros = comando.ExecuteReader();

                // neste caso o comando de execução é o ExecuteReader pois será criada uma lista na memória

                // do tipo DataReader onde poderão ser percorridos todos os registros encontrados

 

                while (registros.Read())

                // neste comando é solicitado que enquanto o datareader registros puder ler, deve-se repetir a operação

                {

                    this.codigo = Convert.ToInt32(registros["codigo"].ToString());

                    // nestes comandos iremos atribuir às variáveis da classe os valores obtidos

                    // direto do banco de dados, sendo que temos que convertê-las para os tipos que

                    // estão especificados quando forem string ou data

                    this.nome = registros["nome"].ToString();

                    this.telefone = registros["telefone"].ToString();

                    this.email = registros["email"].ToString();

                    this.cidade = registros["cidade"].ToString();

                    this.estado = registros["estado"].ToString();

                    this.dtnasc = DateTime.Parse(registros["dtnasc"].ToString());

                    // usamos o datetime.parse para converter uma string para datetime

                    return true;

                    // retornamos verdadeiro para indicar a execução completa da rotina

                }

            }

            catch (Exception e)

            // caso haja erro, serão tratados nesta área, e a variável "e" guardará as mensagens

            // de exceção (erros)

            {

                this.Msgerro = "Erro" + e.Message.ToString();

                // colocamos na propriedade Msgerro a mensagem indicando o erro para ser extraída de fora da classe

            }

 

            return false;

            // retorna-se falso para encerrar o método indicando que houve erro

        }

 

Depois de feito o método consultar, vamos montar o método alterar, lembrando-se que a alteração diferencia-se da inclusão pelo fato de já termos o registro no banco de dados, e desta forma o mesmo será alterado utilizando-se da chave primária (código) para encontra-lo no banco de dados.

public bool alterar()

        // criamos o método alterar que neste caso não possui parâmetros, por que como vamos alterar o registro

        // inteiro no banco de dados, então vamos utilizar os campos já existentes na classe

        {

            SqlConnection con = new SqlConnection("Data Source = LOCALHOST\\SQLEXPRESS;Initial Catalog=BDAULACSHARP;Integrated Security=True;Pooling=False");

            // aqui é criada a conexão com o banco de dados, isto requer que no topo seja adicionado o

            // comando "using System.Data.SqlClient;" para adicionar a biblioteca do sql server

            try

            {

                SqlCommand comando = new SqlCommand();

                // aqui é definido o comando que será executado como uma instância da classe Sqlcommand

                comando.CommandText = "update Clientes set nome = @nome, telefone = @telefone, email = @email, cidade = @cidade, estado = @estado, dtnasc = @dtnasc where " + "codigo = @codigo";

                // aqui definimos o texto que contém o comando sql para realizar a inserção

                comando.Parameters.AddWithValue("@codigo", this.codigo);

                // damos inicio à passagem dos parâmetros do comando sql

                comando.Parameters.AddWithValue("@nome", this.nome);

                comando.Parameters.AddWithValue("@telefone", this.telefone);

                comando.Parameters.AddWithValue("@email", this.email);

                comando.Parameters.AddWithValue("@cidade", this.cidade);

                comando.Parameters.AddWithValue("@estado", this.estado);

                comando.Parameters.AddWithValue("@dtnasc", this.dtnasc);

                comando.Connection = con;

                // neste comando vinculamos a conexão com o banco de dados que foi criada ao comando

                con.Open();

                // aqui é executada a abertura da conexão

                comando.ExecuteNonQuery();

                // aqui é executado o comando criado, como este comando não retorna uma consulta

                // utilizamos o comando ExecuteNonQuery

                return true;

                // caso o programa tenha chegado até aqui é retornado o valor true pois o mesmo executou

                // com sucesso

            }

            catch (Exception e)  // tratamos o erro caso tenha ocorrido com este comando

            {

                // após o erro tudo que estiver dentro do Catch é executado

                this.msgerro = "Erro " + e.Message.ToString();

                // aqui a variável msgerro recebe a mensagem de erro do comando executado

                // para permitir que seja obtida uma resposta fora da classe para os erros

            }

            return false;

            // retornamos falso pois se o programa chegou até aqui significa que houve algum erro

        }

 

Agora montamos o método excluir para remover um cliente do banco de dados

public bool excluir(int codigo)

        // cria-se o método excluir do tipo bool para retornar verdadeiro ou falso indicando o sucesso ou não

        // o parâmetro código indica o código do produto a se excluir

        {

            SqlConnection con = new SqlConnection("Data Source = LOCALHOST\\SQLEXPRESS;Initial Catalog=BDAULACSHARP;Integrated Security=True;Pooling=False");

            // cria-se o objeto con, que estabelece a ligação com o banco de dados

           

            try   // utilizamos o try para tratar a execução do comando caso haja erro

            {

                SqlCommand comando = new SqlCommand();

                // cria-se o objeto comando para conter o comando a executar

                comando.CommandText = "delete from Clientes where codigo = @codigo";

                // coloca-se o comando SQL em forma de texto para ser executado

                comando.Parameters.AddWithValue("@codigo", codigo);

                // passamos o parâmetro código para ser substituido pelo @codigo no comando sql

                comando.Connection = con;

                // vinculamos o banco de dados representado pela variavel con, ao comando

                con.Open();

                // abrimos o banco de dados

                comando.ExecuteNonQuery();

                // executamos o comando, neste caso como não há consulta, é um NonQuery

                return true;

                // retornamos verdadeiro caso haja sucesso

            }

            catch (Exception e)

            {

                this.msgerro = "Erro " + e.Message.ToString();

                // colocamos  a mensagem de erro dentro da variável msgerro

            }

            return false;

            // retornamos falso caso o programa tenha chegado até aqui é por que houve erro

        }

 

Falta agora apenas o método listar, que irá ser um pouco diferente dos demais, pois o seu retorno é através de um DataReader, ou seja, ele devolve a lista dos registros encontrados no banco de dados.

public SqlDataReader listar()

        {

            SqlConnection con = new SqlConnection("Data Source = LOCALHOST\\SQLEXPRESS;Initial Catalog=BDAULACSHARP;Integrated Security=True;Pooling=False");

            // aqui é criada a conexão com o banco de dados, isto requer que no topo seja adicionado o

            // comando "using System.Data.SqlClient;" para adicionar a biblioteca do sql server

       

            SqlDataReader registros = null;

            // criamos o objeto "registros" que trará os registros do banco de dados, e atribuímos inicialmente o valor "null" à ele por não conter nada

 

            try

            {

                SqlCommand comando = new SqlCommand();

                // aqui é definido o comando que será executado como uma instância da classe Sqlcommand

                comando.CommandText = "select * from Clientes order by nome";

                // neste ponto definimos o comando SQL que será executado

                comando.Connection = con;

                // neste comando vinculamos a conexão com o banco de dados que foi criada ao comando

                con.Open();

                // aqui é executada a abertura da conexão

                registros = comando.ExecuteReader();

                // realizamos a atribuição do resultado da consulta ao objeto "registros"

            }

            catch (Exception e)  // tratamos o erro neste ponto

            {

                this.msgerro = "Erro " + e.Message.ToString();

                // aqui coloca-se a mensagem de erro para acesso externo

            }

            return registros;

            // e retornamos neste caso o objeto registros, que contém todos os dados obtidos na consulta

        }

 

 

Pronto, a classe está pronta, agora temos que montar o formulário que irá utilizá-la.

Gostou ? Compartilhe