NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!
UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI
Ola Pessoal,
dando continuidade ao nosso projeto, hoje iremos falar mais um pouco sobre o ADO.Net e implementar os códigos para o funcionamento de algumas de nossas páginas.
As páginas a serem implementadas hoje são: cadCategorias.aspx, cadUsuarios.aspx e cadNoticias.aspx.Logo vocês verão as facilidades e benefícios que o ADO.Net nos traz quando precisamos trabalhar com acesso a dados.
Objeto Command
Na segunda parte deste tutorial falamos sobre o objeto Connection. Hoje estaremos utilizando o objeto Command. O objeto Command pode ser implementado em todas as classes que eu citei no segundo tutorial, a única coisa que muda é o nome, que depende do tipo de banco de dados que você estará acessando. Logo se temos um namespace do tipo System.Data.OleDb, teremos um objeto Command do tipo OleDbCommand, assim também se o meu namespace for System.Data.SqlClient, seria SqlCommand.
Seus principais métodos são:
» ExecuteNonQuery().
» ExecuteReader()
» ExecuteScalar()
O método ExecuteNonQuery executa a operação em questão e retorna apenas o número de linhas afetadas, porém, não retorna dados da tabela. É ideal para operações de inserção.
O método ExecuteReader é utilizado para percorrer registros dentro de uma tabela. Sempre é implementado com um obejeto do tipo DataReader.
O método ExecuteScalar é também utilizado para retornar resultados, porém, seu uso é especificamente para consultas que retornam apenas um valor, e não um conjunto de registros.
Para implementar o objeto Command é necessário a definição de algumas propriedades importantes:
» CommandType.
» CommandText.
» Connection.
A propriedade CommandType informa qual o tipo de comando a ser executado, como comando simples ou stored procedure. Quem fornece o tipo de comando é o namespace System.Data. Portanto, caso eu precise utilizar um comando do tipo storedprocedure, deveria fazer conforme o exemplo a seguir:
ObjCommand.CommandType=System.Data.CommandType.StoredProcedure.
Caso você queira simplificar, basta importer o namespace System.Data e utilizar da seguinte maneira:
ObjCommand.CommandType=CommandType.StoredProcedure.
Agora que já conhecemos o objeto Command, já podemos começar a trabalhar no nosso projeto novamente.
Iremos então criar o código para a inclusão dos dados para as páginas que citei acima. O nosso esquema de códigos para estas páginas será da seguinte forma:
» Obter a string de conexão que está armazenada no arquivo de configuração.
» Criar o objeto de OleDbConnection
» Criar o OleDbCommand.
» Definir as propriedades para a execução do objeto OleDbCommand.
» Executar o objeto Command.
» Tratar as exceções.
» Informar o resultado da operação ao usuário.
Ok, creio eu que relacionando as tarefas a serem realizadas fica muito mais fácil de nos nortear-mos dentro da estrutura de códigos.
A nossa primeira tarefa é criar a string de conexão com o banco de dados. Esta string pode ser criada diretamente no código, ou ser criada no arquivo de configuração da aplicação, o Web.config.
A necessidade de se criar esta string no Web.config está na facilidade de acesso a esta string. Desta forma, não precisaremos criar várias vezes a mesma string para acessar o banco de dados, visto que várias partes da aplicação acessarão o banco de dados, e assim, caso a string de conexão tenha que sofrer alterações, como por exemplo, trocar o nome do banco de dados, isto se fará em apenas um local, no arquivo Web.Config. Abra o arquivo Web.config da sua aplicação e adicione a seguinte chave:
<appSettings>
<add key="stringDeConexao"
value="Provider=Microsoft.Jet.Oldb.4.0;Datasource=
Caminho_Físico_do_banco_de_dados"
/>
</appSettings>
Assim, o arquivo Web.config deve estar da seguinte forma:
Note que é extremamente necessário que você altere o valor do Data source para o caminho correto onde seu banco de dados está armazenado.
Agora podemos começar a construir o código.
Abra o arquivo cadCategorias.aspx.
Clique na guia de códigos para visualizar o código da página.
Vamos criar uma rotina com o nome AdicionarCategoria, que receberá o parâmetro NomeDaCategoria que é do tipo string.
Não esqueça de fazer referência a classe que iremos utilizar:
Agora, adicione o seguinte código, mas leia antes para tentar entender.
private void AdicionarCategoria(string NomeDaCategoria)
{
///cria a variável que servirá como instãncia para o objeto de conexão.
OleDbConnection Conexao;
///Constrói o objeto de conexão
Conexao=new OleDbConnection();
///Obtém a string de conexão que foi criada no arquivo Web.config
Conexao.ConnectionString=System.Configuration.ConfigurationSettings.
AppSettings["stringDeConexao"];
///cria a variável que servirá como instância para o objeto de comando.
OleDbCommand Comando;
///Constrói o objeto de comando.
Comando=new OleDbCommand();
///configura as propriedades para a execução do comando.
///Tipo de comando a ser executado
Comando.CommandType=CommandType.Text;
///Conexão que está sendo utilizada.
Comando.Connection=Conexao;
///Comando sql a ser executado no banco de dados.
Comando.CommandText="Insert Into TbCategorias (Nome)Values('" + NomeDaCategoria + "')";
///bloco de tratamento de exceções. Iremos tratar qualquer tipo de exceção que ocorrer.
try
{
///Este bloco de código será executado caso não haja exceções.
///Abre a conexão
Conexao.Open();
///Executa o comando no banco de dados.
Comando.ExecuteNonQuery();
///Envia resposta ao cliente, através de uma mensagem JavaScript.
Response.Write("<script>alert('A nova categoria foi adicionada com sucesso!')</script>");
///Limpa o campo txtCategoria.
txtCategoria.Text=string.Empty;
}
catch(Exception erro)
{
///Este bloco define o que acontecerá caso aconteça uma exceção.
Response.Write("<script>alert('Ocorreu um erro ao executar o comando!')</script>");
}
finally
{
///Este bloco garante a execução dos códigos abaixo independente se houver exceção.
///Fecha a conexão.
Conexao.Close();
///Elimina os objetos da memória.
Conexao.Dispose();
Comando.Dispose();
}
}
Alguns detalhes sobre o código acima
Veja que na propriedade CommandText estou passando a string sql a ser executada no banco de dados. Esta string deve ser criada com cuidado, pois, geralmente os iniciantes costumam errar aqui.
Outro ponto importante é o bloco de tratamento de exceções. No próprio comentário do código deixei claro que iria tratar qualquer tipo de exceção que ocorresse na hora da execução deste trecho. Assim, caso ocorra esta exceção, o sistema irá informar uma mensagem usando o javascript, que é opcional. Utilizei o javascript apenas como curiosidade, mas você poderá criar uma variável e depois mandar escrever seu valor. Veja como ficou a execução caso ocorra uma exceção:
Antes de clicar no botão Salvar...
Após clicar no botão Salvar.
Eu simulei o erro para poder testar. Mas como saber qual o erro que está ocorrendo?
Simples. A classe de exceções nos traz a propriedade Message, que informa qual a mensagem da exceção ocorrida. Neste bloco você poderia executar diversas ações para ter controle dos problemas que podem acontecer no seu banco de dados, como por exemplo, criar um log e registrar todas as mensagens de erro, ou enviar estas mensagens por e-mail, o que vale é a criatividade.
Uma coisa importante
Criamos a rotina AdicionarCategoria, mas, não esquece que para que ela seja executada, você deve chamá-la no evento clik do btnSalvar, veja:
O parâmetro a ser passado o valor do txtCategoria, ou seja, txtCategoria.Text.
Fica então o desafio para você. Para os arquivos cadUsuarios.aspx e cadNoticias.aspx você criará os códigos de inclusão. No próximo tutorial eu mostrarei apenas o código para você conferir ou tirar alguma dúvida, e também explicarei algumas particularidades. Portanto, não deixe de acompanhar a seqüência deste tutorial.