C# - Criando um projeto de acesso a dados no SharpDevelop - 2


Na primeira parte deste artigo eu mostrei como acessar e selecionar dados de um banco de dados Microsoft Access. Como exemplo usei o famoso Northwind.mdb e criei uma rotina que permitia selecionar o banco de dados e a tabela para exibir todos os registros em controle um DataGridView.

Neste artigo eu vou mostrar como incluir dados em uma tabela de um banco de dados Microsoft Access usando C# e o SharpDevelop.

Ao invés de continuar usando o Northwind.mdb eu vou criar um novo banco de dados chamado Cadastro.mdb e uma tabela Clientes contendo a seguinte estrutura:

 Tabela Clientes do banco de dados Cadastro.mdb

Nota: Para saber como criar um banco de dados usando o Microsoft Access, usando SQL Server, via código , usando ADO  veja o meu artigo:  Criar banco de dados via Código - Access , SQL Server

Vou manter toda a estrutura criada na primeira parte do artigo: Acesso a tabela Clientes com seleção de todos os dados e exibição em um controle DataGridView.

Desta forma nada irá mudar , apenas o nome do banco de dados e da tabela.

Irei criar um novo projeto usando o SharpDevelop de forma a poder desenvolver todas as operações básicas de dados.

Inicie o SharpDevelop e no menu Arquivo criar uma nova Solução através da opção: Novo -> Solução;

Na janela Novo Projeto expanda a pasta C# e selecione Aplicações Windows e em modelos selecione Aplicação Windows;

A seguir informe o nome Cadastro e o local onde o projeto será criado, clicando no botão Criar;

No formulário MainForm.cs vou incluir dois controles Buttons:  um novo botão para incluir dados(btnIncluir) e outro botão (btnEncerrar) para encerrar a aplicação;

Para incluir dados eu vou abrir um novo formulário exibindo os campos para que o usuário digite os dados e a seguir clique em um botão para salvar os dados na tabela Clientes.

Então a partir do menu Projeto selecione Adicionar -> Novo Item e a seguir na janela Novo Arquivo selecione C# -> Aplicações Windows , em modelos escolha Formulário e informe o nome frmIncluir.cs;

Neste formulário vamos definir o seguinte leiaute:

Temos os seguintes controles inseridos neste formulário:

- 7 controles Labels

- 7 controles TextBox :

  • txtCodigo , TabStop = False , ReadOnly = True
  • txtNome
  • txtEndereco
  • txtCidade
  • txtEstado
  • txtCep
  • txtTelefone

- 2 controles Button

  • btnSalvar
  • btnCancelar

Aguarde o próximo artigo onde irei mostrar como incluir dados usando C# no SharpDevelop.

Como faremos para abrir o formulário frmincluir.cs a partir do botão Incluir do formulário MainForm.cs ?

Para isso vamos incluir o seguinte código no evento Click do botão btnIncluir do formulário MainForm.cs:

void BtnIncluirClick(object sender, EventArgs e)

{

    frmIncluir frm2 = new frmIncluir();

    frm2.ShowDialog();

    iniciaAcesso();

}

Este código irá abrir o formulário frmincluir no modo modal de forma que ele terá que ser encerrado para o processamento continuar.

No evento Click do botão Salvar do formulário frmIncluir.cs devemos incluir o código para salvar os dados. O código é exibido a seguir:

void BtnSalvarClick(object sender, EventArgs e)

{

    if (validaDados())

   {

      SalvaDados();

   }

   else

   {

      MessageBox.Show("Dados Inválidos...");

      txtNome.Focus();

      return;

   }

}

Este código irá salvar os dados se a validação for efetuada com sucesso. Devemos então criar a rotina para validar os dados conforme abaixo:

private Boolean validaDados()

{

   if (txtNome.Text == string.Empty)

      return false;
 

   if (txtEndereco.Text == string.Empty)

      return false;

 

    if (txtCidade.Text == string.Empty)

      return false;

 

    if (txtEstado.Text == string.Empty)

      return false;

 

    if (txtCep.Text == string.Empty)

       return false;

 

    return true;

}

A rotina de validação verifica se algo foi digitado nos controles TextBox; vai retornar true somente se todos os dados forem informados;

Falta a rotina para salvar os dados que é exibida a seguir:

private void SalvaDados()

{

string strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\dados\\Cadastro.mdb";

string strSQL = "INSERT INTO Clientes(nome,endereco,cidade,estado,cep,telefone)"

                     + " VALUES ('" + txtNome.Text + "','" + txtEndereco.Text + "','" + txtCidade.Text + "','" + _
                     
txtEstado.Text + "','" + txtCep.Text + "','" + txtTelefone.Text + "')"
;

 

//cria a conexão com o banco de dados

OleDbConnection dbConnection = new OleDbConnection(strConnection);

 

//Cria o comando que inicia a query

OleDbCommand cmdQry = new OleDbCommand(strSQL, dbConnection);

try

{

// abre o banco

dbConnection.Open();

// executa a query

cmdQry.ExecuteNonQuery();

//

MessageBox.Show("Dados Salvos com sucesso.");

}

//Trata a exceção

catch (OleDbException ex)

{

MessageBox.Show("Error: " + ex.Message);

}

finally

{

//fecha a conexao

dbConnection.Close();

}

}

O importe a destacar nesta rotina é o seguinte:

Estou definindo uma instrução SQL INSERT INTO de e usando os valores informados nos  controles TextBox para incluir em cada campo da tabela Clientes. Note que o campo codigo não foi informado pois é um campo auto-numeração;

Nota: Para saber mais sobre operações SQL acompanhe o meu artigo:

 

string strSQL = "INSERT INTO Clientes(nome,endereco,cidade,estado,cep,telefone)"

                     + " VALUES ('" + txtNome.Text + "','" + txtEndereco.Text + "','" + txtCidade.Text + "','" + _
                     
txtEstado.Text + "','" + txtCep.Text + "','" + txtTelefone.Text +
"')"
;

 

Em seguida criei uma conexão com o banco de dados e defini um objeto Command para executar a instrução SQL via método ExecuteNonQuery; (O objeto Command da ADO.NET fornece o método ExecuteNonQuery para executar consultas que não retornam linhas (registros). )

Nota:  Saber mais sobre o objeto Command acompanhe os artigos:

 

/cria a conexão com o banco de dados

OleDbConnection dbConnection = new OleDbConnection(strConnection);

 

//Cria o comando que inicia a consulta inclusão

OleDbCommand cmdQry = new OleDbCommand(strSQL, dbConnection);

try

{

// abre o banco

dbConnection.Open();

// executa a query

cmdQry.ExecuteNonQuery();

...

 

Nota: a estrutura Try/Catch/Finally é usada para efetuar o tratamento de exceções sendo que o bloco Finally sempre será executado.

Para saber mais acompanhe os artigos:

 

O código do botão Encerrar é dado abaixo:

 

void BtnCancelarClick(object sender, EventArgs e)

{

    this.Close();

}

Após executar o comando a conexão é fechada e ao retornar ao formulário MainForm.cs chamamos a rotina  iniciaAcesso(); para exibir os dados no Grid novamente.

Executando o projeto e clicando no botão Incluir poderemos incluir um novo registro e salvar na tabela Clientes conforme a figura acima.

Então para incluir dados em uma tabela fazemos assim:

Acompanhe a continuação deste artigo aqui :  C# - Criando um projeto de acesso a dados no SharpDevelop - 3

Até lá...

Pegue o projeto completo aqui: Cadastro.zip

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti