C# - Acesso SQL Server - Navegação Mestre-Detalhes


Programar se aprende programando, certo ?

E nada melhor para aprender do que ter um protótipo funcional com o código fonte a partir do qual podemos estudar.

Este singelo projeto feito na linguagem C# realiza o acesso e as operações de inclusão, edição e exclusão em uma base de dados SQL Server.

Então vamos ao que interessa...

O projeto poderá ser aberto nos seguintes IDEs:

Além disso você deverá instalar os seguintes recursos:

O banco de dados SQL Server

A aplicação Acesso o banco de dados Northwind.mdf e permite efetuar uma navegação mestre-detalhes entre os clientes e seus pedidos.

Na figura abaixo temos o relacionamento entre as tabelas Customers e Orders que iremos usar para construir o relacionamento usando o objeto Relation:

A interface da aplicação

A seguir temos a interface da aplicação no formulário form1.cs que utiliza os seguintes controles:

  1. DataGridView - dgvLista;
  2. TextBox - txtPesquisar, txtTitulo e txtPreco;
  3. Button - btnAtualizar, btnSalvar, btnCancelar, btnIncluir, btnDeletar e btnFechar;

O código da aplicação (partes principais)

No início do formulário temos a definição dos namespaces usados no projeto

using System;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;

Note que estamos referenciando o namespace para acessar as classes ADO .NET para o SQL Server.

A string de conexão usada no programa é a seguinte:

//define a string de conexão com o banco de dados Northwind
SqlConnection con = new SqlConnection("server=.\\SQLEXPRESS; database=Northwind; integrated security=SSPI;");

Se você predente usar outro banco de dados basta alterar os nomes dessas variáveis conforme o provedor pertinente.

1 - Código do evento Load do formulário

private void Form1_Load(object sender, System.EventArgs e)
{
    try
    {
       //define a string de conexão com o banco de dados Northwind
      SqlConnection con = new SqlConnection("server=.\\SQLEXPRESS; database=Northwind; integrated security=SSPI;");

     //define dois adaptadores para clientes e para pedidos
      SqlDataAdapter daCust = new SqlDataAdapter("Select * from Customers", con);
      SqlDataAdapter daOrders = new SqlDataAdapter("Select * from Orders", con);
      DataSet ds = new DataSet();
                
     //preenche cada um dos datasets
     daCust.Fill(ds, "Cust");
     daOrders.Fill(ds, "Orders");

    //defina o relacionamento entre as tabelas
    ds.Relations.Add("CustOrd", ds.Tables["Cust"].Columns["CustomerID"],ds.Tables["Orders"].Columns["CustomerID"]);
     //
    //Realiza a vinculação dos controles
    //
    textBox1.DataBindings.Add("Text", ds.Tables["Cust"], "CustomerID");
    textBox2.DataBindings.Add("Text", ds.Tables["Cust"], "CompanyName");
    textBox3.DataBindings.Add("Text", ds.Tables["Cust"], "ContactName");
    //
    textBox4.DataBindings.Add("Text", ds.Tables["Cust"], "Address");
     textBox5.DataBindings.Add("Text", ds.Tables["Cust"], "City");
     textBox6.DataBindings.Add("Text", ds.Tables["Cust"], "Country");

     /defina a fonte de dados 
     dataGrid1.DataSource = ds.Tables["Cust"];
      dataGrid1.DataMember = "CustOrd";
      //
      //Inicializa o currencymanager
     //
      cm = (CurrencyManager)this.BindingContext[ds.Tables["Cust"]];
     }
      catch (Exception ex)
     {
          MessageBox.Show("Erro ao acessar o banco de dados : " + ex.Message, "Erro acesso aos dados");
      }
}

O código que permite navegar pelos registros exibindo os clientes e seus pedidos:

private void button1_Click(object sender, System.EventArgs e)
{
     //primeiro registro
     if((cm!=null)&(cm.Count>0))
		cm.Position=0;
}

private void button2_Click(object sender, System.EventArgs e)
{
    //registro anterior
    if((cm!=null)&(cm.Count>0)&(cm.Position>0))
		cm.Position -=1;
}

private void button3_Click(object sender, System.EventArgs e)
{
     // proximo registro
     if((cm!=null) &(cm.Count>0)&(cm.Position<cm.Count-1))
		cm.Position +=1;
}

private void button4_Click(object sender, System.EventArgs e)
{
       //ultimo registro
      if((cm!=null)& (cm.Count>0))
	cm.Position=cm.Count;
}

Executando o projeto iremos obter:

Uma aplicação simples mas que mostra como você pode realizar a navegação mestre-detalhes acessando um banco de dados SQL Server.

Pegue o projeto completo aqui: MestreDetalhes_CSharp.zip

Eu sei é apenas C# , mas eu gosto...

Adquirindo o Super CD .VB , o Super CD .NET ou o Super DVD .NET Você recebe também :

1- O projeto VB .NET completo do programa e 3 resumos PDF (DataSet,DataTable e DataView)

2- Um Curso básico de ADO .NET para a linguagem C# em PDF com 7 capítulos : veja aqui o conteúdo.

Veja como fazer o seu pedido , clique aqui ->
 

Referências:


José Carlos Macoratti