C# - Cadastro Bancário : incluindo, editando e excluindo dados.


Abaixo temos a tela principal da nossa aplicação - Cadastro Bancário. É um exemplo bem simples que tem por objetivo mostrar como acessar um banco de dados Access e realizar as operações de consulta , inclusão , edição e exclusão usando código C-Sharp.

Eu editei o projeto usando o editor SharpDevelop. Para saber mais sobre o SharpDevelop veja os links abaixo:

O código completo da aplicação , incluindo o código gerado pelo Windows esta exibido abaixo:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;

namespace Macoratti
{
	/// <summary>
	/// descricao do formulario
	/// </summary>
	/// 

	public class Form1 : System.Windows.Forms.Form
	{
		private System.Windows.Forms.Label lblSaldo;
		private System.Windows.Forms.Label lblnumeroConta;
		private System.Windows.Forms.ComboBox cbxnumeroConta;
		private System.Windows.Forms.Button btnDeleta;
		private System.Windows.Forms.Button btnNovo;
		private System.Windows.Forms.Button btnAnterior;
		private System.Windows.Forms.Button btnPrimeiro;
		private System.Windows.Forms.Button btnAtualiza;
		private System.Windows.Forms.Button btnUltimo;
		private System.Windows.Forms.Button btnProximo;
		private System.Windows.Forms.TextBox tbxName;
		private System.Windows.Forms.Label lblName;
		private System.Windows.Forms.Button btnCancela;
		private System.Windows.Forms.TextBox tbxSaldo;
		private System.Windows.Forms.Label lblDisplay;
		private System.Windows.Forms.Button btnEdita;
	
		private System.ComponentModel.Container components = null;

		private System.Data.OleDb.OleDbConnection oleDbConnection1;
		private System.Data.OleDb.OleDbDataAdapter oleDbDataAdapter1;
		private System.Data.OleDb.OleDbCommandBuilder oleDbCommandBuilder1;
		private DataSet Ds_banco;
		private string sqlStr;
		private int linhaAtual;
		private string opModo	;

		private string numeroConta;

		public Form1()
		{
			//
			// Required for Windows Form Designer support
			//
			InitializeComponent();

			// Vincula os eventos aos botoes
			btnPrimeiro.Click += new EventHandler(btnPrimeiro_Click);
			btnAnterior.Click += new EventHandler(btnAnterior_Click);
			btnProximo.Click += new EventHandler(btnProximo_Click);
			btnUltimo.Click += new EventHandler(btnUltimo_Click);
			btnNovo.Click += new EventHandler(btnNovo_Click);
			btnEdita.Click += new EventHandler(btnEdita_Click);
			btnDeleta.Click += new EventHandler(btnDeleta_Click);
			btnAtualiza.Click += new EventHandler(btnAtualiza_Click);
			btnCancela.Click += new EventHandler(btnCancela_Click);

			// Vincula o evento para a conta corrente ao combobox
			cbxnumeroConta.SelectedIndexChanged += new EventHandler(cbxnumeroConta_Changed);

			// carrega os dados
			carregaDados();
	
		}

		private void carregaDados()
		{
                                      //efetua conexao com o banco de dados banco.mdb  
			string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\capp+\\Bancos.mdb";
			try
                                       {
			     oleDbConnection1 = new OleDbConnection(connStr);
			     oleDbConnection1.Open();
			     Ds_banco = new DataSet();
			}
			catch (Exception e)
			{
			     MessageBox.Show("Erro ao acessar a base de dados : " + e.ToString());
			     this.Dispose();
			}
			sqlStr = "SELECT numeroConta,nomeCliente,saldoConta "
				+ "FROM banco ORDER BY numeroConta";
			
			oleDbDataAdapter1 = new OleDbDataAdapter(sqlStr, oleDbConnection1);
			oleDbDataAdapter1.SelectCommand.CommandText = sqlStr;
			oleDbCommandBuilder1 = new OleDbCommandBuilder(oleDbDataAdapter1);
			oleDbDataAdapter1.Fill(Ds_banco,"contasBancarias");
			linhaAtual = 0;
		}
		
		/// <summary>
		/// Limpa todos os recursos usados
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		/// <summary>
		/// Não altere o conteudo deste codigo com o editor
		/// </summary>
		private void InitializeComponent() {
			this.btnEdita = new System.Windows.Forms.Button();
			this.lblDisplay = new System.Windows.Forms.Label();
			this.tbxSaldo = new System.Windows.Forms.TextBox();
			this.btnCancela = new System.Windows.Forms.Button();
			this.lblName = new System.Windows.Forms.Label();
			this.tbxName = new System.Windows.Forms.TextBox();
			this.btnProximo = new System.Windows.Forms.Button();
			this.btnUltimo = new System.Windows.Forms.Button();
			this.btnAtualiza = new System.Windows.Forms.Button();
			this.btnPrimeiro = new System.Windows.Forms.Button();
			this.btnAnterior = new System.Windows.Forms.Button();
			this.btnNovo = new System.Windows.Forms.Button();
			this.btnDeleta = new System.Windows.Forms.Button();
			this.cbxnumeroConta = new System.Windows.Forms.ComboBox();
			this.lblnumeroConta = new System.Windows.Forms.Label();
			this.lblSaldo = new System.Windows.Forms.Label();
			this.SuspendLayout();
			// 
			// btnEdita
			// 
			this.btnEdita.Location = new System.Drawing.Point(120, 16);
			this.btnEdita.Name = "btnEdita";
			this.btnEdita.TabIndex = 11;
			this.btnEdita.Text = "Edita";
			// 
			// lblDisplay
			// 
			this.lblDisplay.Location = new System.Drawing.Point(136, 248);
			this.lblDisplay.Name = "lblDisplay";
			this.lblDisplay.Size = new System.Drawing.Size(232, 23);
			this.lblDisplay.TabIndex = 15;
			this.lblDisplay.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
			// 
			// tbxSaldo
			// 
			this.tbxSaldo.Location = new System.Drawing.Point(272, 112);
			this.tbxSaldo.Name = "tbxSaldo";
			this.tbxSaldo.TabIndex = 2;
			this.tbxSaldo.Text = "";
			// 
			// btnCancela
			// 
			this.btnCancela.Location = new System.Drawing.Point(384, 16);
			this.btnCancela.Name = "btnCancela";
			this.btnCancela.TabIndex = 14;
			this.btnCancela.Text = "Cancela";
			// 
			// lblName
			// 
			this.lblName.Location = new System.Drawing.Point(200, 72);
			this.lblName.Name = "lblName";
			this.lblName.Size = new System.Drawing.Size(64, 23);
			this.lblName.TabIndex = 4;
			this.lblName.Text = "Nome";
			this.lblName.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
			// 
			// tbxName
			// 
			this.tbxName.Location = new System.Drawing.Point(272, 72);
			this.tbxName.Name = "tbxName";
			this.tbxName.Size = new System.Drawing.Size(200, 20);
			this.tbxName.TabIndex = 1;
			this.tbxName.Text = "";
			// 
			// btnProximo
			// 
			this.btnProximo.Location = new System.Drawing.Point(264, 192);
			this.btnProximo.Name = "btnProximo";
			this.btnProximo.TabIndex = 8;
			this.btnProximo.Text = "Proximo >";
			// 
			// btnUltimo
			// 
			this.btnUltimo.Location = new System.Drawing.Point(368, 192);
			this.btnUltimo.Name = "btnUltimo";
			this.btnUltimo.TabIndex = 9;
			this.btnUltimo.Text = "Ultimo >|";
			// 
			// btnAtualiza
			// 
			this.btnAtualiza.Location = new System.Drawing.Point(296, 16);
			this.btnAtualiza.Name = "btnAtualiza";
			this.btnAtualiza.TabIndex = 13;
			this.btnAtualiza.Text = "Atualiza";
			// 
			// btnPrimeiro
			// 
			this.btnPrimeiro.Location = new System.Drawing.Point(48, 192);
			this.btnPrimeiro.Name = "btnPrimeiro";
			this.btnPrimeiro.TabIndex = 6;
			this.btnPrimeiro.Text = "|< Primeiro";
			// 
			// btnAnterior
			// 
			this.btnAnterior.Location = new System.Drawing.Point(160, 192);
			this.btnAnterior.Name = "btnAnterior";
			this.btnAnterior.TabIndex = 7;
			this.btnAnterior.Text = "< Anterior";
			// 
			// btnNovo
			// 
			this.btnNovo.Location = new System.Drawing.Point(32, 16);
			this.btnNovo.Name = "btnNovo";
			this.btnNovo.TabIndex = 10;
			this.btnNovo.Text = "Novo";
			// 
			// btnDeleta
			// 
			this.btnDeleta.Location = new System.Drawing.Point(208, 16);
			this.btnDeleta.Name = "btnDeleta";
			this.btnDeleta.TabIndex = 12;
			this.btnDeleta.Text = "Deleta";
			// 
			// cbxnumeroConta
			// 
			this.cbxnumeroConta.DropDownWidth = 96;
			this.cbxnumeroConta.Location = new System.Drawing.Point(88, 72);
			this.cbxnumeroConta.Name = "cbxnumeroConta";
			this.cbxnumeroConta.Size = new System.Drawing.Size(96, 21);
			this.cbxnumeroConta.TabIndex = 0;
			// 
			// lblConta
			// 
			this.lblnumeroConta.Location = new System.Drawing.Point(0, 72);
			this.lblnumeroConta.Name = "lblnumeroConta";
			this.lblnumeroConta.Size = new System.Drawing.Size(80, 23);
			this.lblnumeroConta.TabIndex = 3;
			this.lblnumeroConta.Text = "No. Conta :";
			this.lblnumeroConta.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
			// 
			// lblSaldo
			// 
			this.lblSaldo.Location = new System.Drawing.Point(184, 112);
			this.lblSaldo.Name = "lblSaldo";
			this.lblSaldo.Size = new System.Drawing.Size(80, 23);
			this.lblSaldo.TabIndex = 5;
			this.lblSaldo.Text = "Saldo  R$";
			this.lblSaldo.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
			// 
			// Form1
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.BackColor = System.Drawing.Color.LightGray;
			this.ClientSize = new System.Drawing.Size(488, 309);
			this.Controls.Add(this.lblDisplay);
			this.Controls.Add(this.btnCancela);
			this.Controls.Add(this.btnAtualiza);
			this.Controls.Add(this.btnDeleta);
			this.Controls.Add(this.btnEdita);
			this.Controls.Add(this.btnNovo);
			this.Controls.Add(this.btnUltimo);
			this.Controls.Add(this.btnProximo);
			this.Controls.Add(this.btnAnterior);
			this.Controls.Add(this.btnPrimeiro);
			this.Controls.Add(this.lblSaldo);
			this.Controls.Add(this.lblName);
			this.Controls.Add(this.lblnumeroConta);
			this.Controls.Add(this.tbxSaldo);
			this.Controls.Add(this.tbxName);
			this.Controls.Add(this.cbxnumeroConta);
			this.Name = "Form1";
			this.Text = "Cadastro Bancário";
			this.Load += new System.EventHandler(this.Form1_Load);
			this.ResumeLayout(false);
		}
		#endregion

		/// <summary>
		/// entrada principal da aplicação
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		private void Form1_Load(object sender, System.EventArgs e)
		{
                                    //define o modo padrao , bloqueia os controles , preenche as contas e exibe os dados
			opModo = "Ver";
			bloqueiaControles();
			preencheConta();
			mostraDados();
		}

		private void bloqueiaControles()
		{
                                 //bloqueia os controles
			opModo = "Ver";
			tbxName.ReadOnly = true;
			tbxSaldo.ReadOnly = true;

			btnAtualiza.Enabled = false;
			btnCancela.Enabled = false;
		}

		private void desbloqueiaControles()
		{
                                     //desbloqueia os controles
			tbxName.ReadOnly = false;
			tbxSaldo.ReadOnly = false;

			btnAtualiza.Enabled = true;
			btnCancela.Enabled = true;
		}

		private void preencheConta()
		{
			//preenche as contas
			for ( int i=0; i < Ds_banco.Tables["contasBancarias"].Rows.Count; i++)
			cbxnumeroConta.Items.Add(Ds_banco.Tables["contasBancarias"].Rows[i]["numeroConta"].ToString());
		}

		private void mostraDados()
		{
                                     //exibe os dados
			cbxnumeroConta.Text = Ds_banco.Tables["contasBancarias"].Rows[linhaAtual]["numeroConta"].ToString();
			tbxName.Text = Ds_banco.Tables["contasBancarias"].Rows[linhaAtual]["nomeCliente"].ToString();
			tbxSaldo.Text = Ds_banco.Tables["contasBancarias"].Rows[linhaAtual]["saldoConta"].ToString();
			//mostra a posicao do registro
			lblDisplay.Text = "Registro " + (linhaAtual + 1).ToString() + " de " +
                                       Ds_banco.Tables["contasBancarias"].Rows.Count.ToString();
		}

		private void btnPrimeiro_Click(object source, System.EventArgs e)
		{
			linhaAtual = 0;
			mostraDados();
		}

		private void btnAnterior_Click(object source, System.EventArgs e)
		{
			if ( linhaAtual > 0 )
				linhaAtual --;
			mostraDados();
		}

		private void btnProximo_Click(object source, System.EventArgs e)
		{
			if ( linhaAtual < Ds_banco.Tables["contasBancarias"].Rows.Count -1 )
				linhaAtual ++;
			mostraDados();
		}

		private void btnUltimo_Click(object source, System.EventArgs e)
		{
			linhaAtual = Ds_banco.Tables["contasBancarias"].Rows.Count -1;
			mostraDados();
		}

		private void btnAtualiza_Click(object source, System.EventArgs e)
		{

			if (opModo == "Novo")
			{	
				string novanumeroConta;
				novanumeroConta = cbxnumeroConta.Text;

				if ( !verificaUnicidade(novanumeroConta) )
				{
					MessageBox.Show("Número da conta já existe.!");
					cbxnumeroConta.Focus();
					return;
				}

                //atualiza dados 
                DataRow novaRow = Ds_banco.Tables["contasBancarias"].NewRow();
				novaRow["numeroConta"] = cbxnumeroConta.Text;
				novaRow["nomeCliente"] = tbxName.Text;
				novaRow["saldoConta"] = double.Parse(tbxSaldo.Text);
				Ds_banco.Tables["contasBancarias"].Rows.Add(newRow);
		
				cbxnumeroConta.Items.Add(cbxnumeroConta.Text);
				
				oleDbDataAdapter1.Update(Ds_banco,"contasBancarias");
				MessageBox.Show("Registro incluido com sucesso!");
			}

			if (opModo == "Edita")
			{
				string novanumeroConta;
				novanumeroConta = cbxnumeroConta.Text;

				if ( !verificaUnicidade(novanumeroConta) )
				{
					MessageBox.Show("Número da conta já existe!");
					cbxnumeroConta.Focus();
					return;
				}
				
				int index = cbxnumeroConta.Items.IndexOf(numeroConta);
				cbxnumeroConta.Items.RemoveAt(index);
				cbxnumeroConta.Items.Insert(index, cbxnumeroConta.Text);
				Ds_banco.Tables["contasBancarias"].Rows[linhaAtual]["numeroConta"] = cbxnumeroConta.Text;
				Ds_banco.Tables["contasBancarias"].Rows[linhaAtual]["nomeCliente"] = tbxName.Text;
				Ds_banco.Tables["contasBancarias"].Rows[linhaAtual]["saldoConta"] = double.Parse(tbxSaldo.Text);
				oleDbDataAdapter1.Update(Ds_banco,"contasBancarias");
				MessageBox.Show("Registro atualizado");
			}

			linhaAtual = 0;
			bloqueiaControles();
			mostraDados();

			btnNovo.Enabled = true;
			btnEdita.Enabled = true;
			btnDeleta.Enabled = true;
			btnPrimeiro.Enabled = true;
			btnUltimo.Enabled = true;
			btnAnterior.Enabled = true;
			btnProximo.Enabled = true;

			btnProximo.Focus();
		}

		private void btnEdita_Click(object source, System.EventArgs e)
		{
			linhaAtual = cbxnumeroConta.SelectedIndex;
			opModo = "Edita";
			desbloqueiaControles();

			btnCancela.Enabled = true;
			btnAtualiza.Enabled = true;

			btnNovo.Enabled = false;
			btnEdita.Enabled = false;
			btnDeleta.Enabled = false;
			btnPrimeiro.Enabled = false;
			btnUltimo.Enabled = false;
			btnAnterior.Enabled = false;
			btnProximo.Enabled = false;
			
			numeroConta = cbxnumeroConta.Text;
			cbxnumeroConta.Focus();
		}

		private void btnNovo_Click(object source, System.EventArgs e)
		{
			opModo = "Novo";
			desbloqueiaControles();
			
			cbxnumeroConta.Text = "";
			tbxName.Text = "";
			tbxSaldo.Text = "";

			btnCancela.Enabled = true;
			btnAtualiza.Enabled = true;

			btnNovo.Enabled = false;
			btnEdita.Enabled = false;
			btnDeleta.Enabled = false;
			btnPrimeiro.Enabled = false;
			btnUltimo.Enabled = false;
			btnAnterior.Enabled = false;
			btnProximo.Enabled = false;

			lblDisplay.Text = "";
		
			cbxnumeroConta.Focus();
		}

		private void btnCancela_Click(object source, System.EventArgs e)
		{
			bloqueiaControles();
			mostraDados();

			btnNovo.Enabled = true;
			btnEdita.Enabled = true;
			btnDeleta.Enabled = true;
			btnPrimeiro.Enabled = true;
			btnUltimo.Enabled = true;
			btnAnterior.Enabled = true;
			btnProximo.Enabled = true;

			btnProximo.Focus();
		}

		private void btnDeleta_Click(object source, System.EventArgs e)
		{
			int index = cbxnumeroConta.SelectedIndex;
                                      Ds_banco.Tables["contasBancarias"].Rows[index].Delete();
			oleDbDataAdapter1.Update(Ds_banco,"contasBancarias");
			cbxnumeroConta.Items.RemoveAt(index);
			linhaAtual = 0;
			mostraDados();
			MessageBox.Show("Registro excluido com sucesso.!");
		}

		private void cbxnumeroConta_Changed(object source, System.EventArgs e)
		{
			if (opModo == "Novo" || opModo == "Edita")
			{
				MessageBox.Show("Você não pode selecionar um número de conta neste modo!");
				cbxnumeroConta.Focus();
			}
			else
			{
				linhaAtual = cbxnumeroConta.SelectedIndex;
				mostraDados();
			}
		}

		private bool verificaUnicidade(string novanumeroConta)
		{
			string oldnumeroConta;
			foreach ( DataRow r in Ds_banco.Tables["contasBancarias"].Rows )
			{
				oldnumeroConta = (string) r["numeroConta"];
				if ( novanumeroConta == oldnumeroConta )
					return false;
			}

			return true;
		}
	}
}

 

Para testar o projeto basta você abrir o SharpDevelop e abrir o arquivo form1.cs do projeto.

Por falar nisto pegue o projeto aqui : cadastro bancario

Até a próxima ...


José Carlos Macoratti