C# - Localizando dados em um formulário e exibindo em outro
Este artigo é para iniciantes e mostra como podemos acessar informações em um banco de dados SQL Server usando stored procedures em um formulário e exibir o resultado em outro formulário.
Abra o Visual Studio 2012 Express for desktop e clique em New Project;
A seguir selecione a linguagem Visual C# e o template Windows Forms Application e informe o nome ProcurandoExibindoDados;
Após criar o projeto no menu PROJECT clique em Add Reference;
A seguir selecione e marque o item System.Configuration e clique em OK
Iremos usar o namespace System.Configuration para acessar a string de conexão no arquivo App.Config.
Neste exemplo eu vou usar um banco de dados SQL Server chamado Cadastro e a tabela Clientes que possui a seguinte estrutura e dados:
Vamos criar uma stored procedure no banco de dados clicando com o botão direito sobre o item Stored Procedure e selecionando Add New Stored Procedure;
A seguir digite o código mostrado a seguir:
Criamos a stored procedure LocalizarPorNome que utiliza o parâmetro nome e a instrução SQL : SELECT * FROM CLIENTES WHERE NOME LIKE @NOME + '%'
No arquivo App.Config inclua a definição da string de conexão com o banco de dados Cadastro conforme mostrado a seguir:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="SqlServerCadastro" connectionString="Data Source=.\sqlexpress;Initial Catalog=Cadastro;Integrated Security=True" providerName="System.Data.SqlClient"/> </connectionStrings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration> |
Agora vamos incluir no formulário form1.cs que foi criado por padrão um controle Label, um controle TextBox(txtNome) e um controle Button(btnProcurar) conforme mostra o leiaute abaixo:
Agora defina o seguinte código para este formulário:
using System; using System.Data; using System.Windows.Forms; using System.Configuration; using System.Data.SqlClient; namespace ProcurandoExibindoDados { public partial class Form1 : Form { string strconn = ConfigurationManager.ConnectionStrings["SqlServerCadastro"].ConnectionString; public Form1() { InitializeComponent(); } private void btnProcurar_Click(object sender, EventArgs e) { if(string.IsNullOrEmpty(txtNome.Text)) { MessageBox.Show("Informe o nome para localizar.", "Localizar", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { Form2 frmDetalhesClientes = new Form2(); SqlConnection sqlconn = new SqlConnection(strconn); sqlconn.Open(); SqlCommand cmdProcuraClientes = new SqlCommand("LocalizarPorNome", sqlconn); cmdProcuraClientes.CommandType = CommandType.StoredProcedure; SqlDataAdapter da = new SqlDataAdapter(cmdProcuraClientes); DataSet dsClientes = new DataSet(); da.SelectCommand.Parameters.AddWithValue("@NOME", SqlDbType.VarChar).Value = txtNome.Text.Trim(); da.Fill(dsClientes); if (dsClientes.Tables[0].Rows.Count > 0) { frmDetalhesClientes.dsGetDetalhes = dsClientes; frmDetalhesClientes.Show(); } } catch (Exception ex) { MessageBox.Show("Erro : " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } |
Este código realiza a conexão com o banco de dados e utiliza a stored procedure LocalizarPorNome para obter as informações da tabela Clientes.
A seguir o método dsGetDetalhes do formulário form2.cs é chamado preenchendo o dataset com os valores obtidos no formulário form1.cs.
No menu PROJECT clique em Add Windows Forms e aceite o nome Form2.cs;
A seguir inclua os seguintes controles neste formulário:
Este formulário irá apenas exibir os dados dos clientes nos controles TextBox.
A seguir digite o código abaixo neste formulário:
using System; using System.Data; using System.Windows.Forms; namespace ProcurandoExibindoDados { public partial class Form2 : Form { //declara um dataset privado que armazena os detalhes //que serão armazenados no dataset public dsGetDetalhes private DataSet dsDetalhesClientes; public DataSet dsGetDetalhes { get { return dsDetalhesClientes; } set { dsDetalhesClientes = value; } } public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { GetClientesForm1(); //chama a função } private void GetClientesForm1() //exibe detalhes dos clientes { try { txtID.Text = dsDetalhesClientes.Tables[0].Rows[0]["id"].ToString(); txtNome.Text = dsDetalhesClientes.Tables[0].Rows[0]["nome"].ToString(); txtEndereco.Text = dsDetalhesClientes.Tables[0].Rows[0]["endereco"].ToString(); txtTelefone.Text = dsDetalhesClientes.Tables[0].Rows[0]["telefone"].ToString(); txtEmail.Text = dsDetalhesClientes.Tables[0].Rows[0]["email"].ToString(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnSair_Click(object sender, EventArgs e) { this.Close(); } } } |
O código acima obtém os dados do dataset com as informações do cliente obtidas no formulário form1.cs e exibe o resultado nas caixas de texto do formulário form2.cs.
Executando o projeto o formulário para localizar dados é apresentado. Digite um nome e clique no botão Procurar:
As informações serão exibidas no formulário form2.cs conforme abaixo:
Pegue o projeto completo aqui: ProcurandoExibindoDados.zip
Mateus 15:3
Ele (Jesus), porém, respondendo, disse-lhes: E vós, por que transgredis o mandamento de Deus por causa da vossa tradição ?Referências: