Você está na página 1de 9

INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA CAMPUS NATAL - CENTRAL DIRETORIA DE EDUCAO E TECNOLOGIA DA INFORMAO

Av. Sen. Salgado Filho, 1559, Natal/RN, 59015-000. Fone/FAX (084) 4005-2637 E-mail: dietinf@ifrn.edu.br - Site: http://www.ifrn.edu.br/dietinf Apostila: Acesso ao Banco de Dados ADO.NET (C#) Professor: Fabiano Papaiz

Windows Forms com ADO.NET A partir de agora veremos como desenvolver aplicaes Windows Forms utilizando componentes ligados a uma fonte de dados (data bound controls). Atravs deles, podemos criar facilmente aplicaes para ler, adicionar, modificar e excluir dados de um banco de dados. Vamos criar uma aplicao simples para armazenar nossos contatos com informaes de telefone e e-mail (apenas 1 telefone e 1 e-mail para cada contato). Antes de tudo vamos criar o banco de dados que iremos utilizar na nossa aplicao. Para isso, execute o script abaixo em uma janela 'Query' do SQL Server Management Studio: (para ficar mais rpido, usem a tcnica Ctrl+C / Ctrl+V) ;)

USE [master] GO CREATE DATABASE [ambprog_databound] GO USE [ambprog_databound] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[contatos]( [id] [int] IDENTITY(1,1) NOT NULL, [nome] [nvarchar](80) NOT NULL, [sexo] [nchar](1) NOT NULL, [telefone] [nvarchar](15) NOT NULL, [email] [nvarchar](100) NULL, [ehDoIFRN] [bit] NOT NULL, CONSTRAINT [PK_contatos] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]

Esse script DDL ir criar um banco de dados chamado ambprog_databound e dentro dele uma tabela chamada contatos, a qual possui os seguintes campos:

Para esta tabela, foi definido que a coluna id ser do tipo int IDENTITY. Isto faz com que a cada incluso de registro, um valor sequencial seja definido automaticamente para este campo assim no precisaremos nos preocupar em gerar ou informar um cdigo PK diferente a cada novo registro (essa uma prtica muito utilizada). A coluna ehDoIFRN do tipo bit, isto significa que ela poder armazernar apenas o valor 1 ou 0, em outras palavras, verdadeiro ou falso. Percebam tambm que a nica coluna que poder ficar com valor nulo (NULL) a coluna email - as demais so todas obrigatrias.

Com o nosso BD criado vamos agora criar um projeto chamado ProjDataBound.

Agora vamos associar nossa fonte da dados (data source) ao nosso projeto. Acesse a aba 'Data Sources' localizada na parte inferior esquerda do Visual Studio (perto da aba 'Tool Box') veja na figura:

Agora selecione a opo 'Add New Data Source'. Ao fazer isso, sero exibidas telas no padro Wizard (Passo-a-Passo). A primeira tela que aparecer ir pedir para voc escolher o tipo de fonte de dados (Choose a Data Source Type). Selecione a opo Database e clique no boto 'Next'. Na segunda tela, devemos escolher a nossa conexo ao BD. Clique no boto 'New Connection' e faa as configuraes conforme a tela a seguir:

No primeiro campo (Data Source), clique no boto 'Change' e escolha na lista que aparecer o 'Microsoft Sql Server (SqlClient)'. Defina os demais campos como exibido na figura e clique no boto 'Test Connection'. Se tudo estiver OK voc ver a mensagem 'Test connection succeeded'. Se aparecer outra mensagem, confira seus campos e teste novamente sua conexo. Aps esta configurao, ser exibida outra tela com o nosso data source selecionado o nome dele dever ser algo parecido com: <nome_do_computador>.ambprog_databound.dbo

Ainda nesta tela, marque a opo 'Yes, include sensitive data in the connection string' e clique em 'Next'. Na tela seguinte, verifique se est marcada a opo 'Yes, save the connection as:' e com um nome definido (algo como ambprog_databoundConnectionString) e clique em 'Next'. Na tela seguinte, selecione a tabela contatos na rvore de objetos e deixe o nome do Data Set como ambprog_databoundDataSet (j dever estar esse nome por padro), conforme ilustrado na figura abaixo:

Para finalizar, clique em 'Finish'. Agora nossa fonte de dados (data source) j estar disponvel na aba 'Data Sources' verifique.

Perceba que, na aba 'Solution Explorer', foi criado um arquivo chamado ambprog_databoundDataSet.xsd. Neste arquivo foram mapeados a tabela contatos e toda sua estrutura (colunas) e isso tornar mais fcil a nossa programao. D um duplo clique sobre este arquivo e veja os mapeamentos criados, que so conforme a figura abaixo:

Neste .xsd foi definido um objeto DataTable chamado contatos o qual ir representar, em memria, a nossa tabela contatos do BD. Perceba que neste DataTable esto definidas todas as colunas da tabela contatos (id, nome, sexo etc). No .xsd foi definido tambm um objeto TableAdapter chamado

contatosTableAdapter. Este objeto fornece um meio de comunicao entre a nossa aplicao e o BD. Atravs dele podemos conectar ao BD, preencher (Fill) o objeto DataTable com os dados existentes no BD e ainda enviar as atualizaes dos dados em memria de volta ao BD, como inseres, alteraes e excluses de registros. Neste objeto ainda foram definidos dois mtodos: Fill() e GetData(). O que nos interessa nesse momento o mtodo Fill(). O mtodo Fill() ir preencher um DataTable com os dados retornados pela query SQL TableAdapter. Para ver essa query clique em contatosTableAdapter e verifique dentro da propriedade SelectCommand a query definida em CommandText, como exibido na figura a seguir: definida na propriedade SelectCommand -> CommandText do

Clicando no boto '...' ao lado de CommandText podemos acessar a janela 'Query Builder' (exibida abaixo) que, como prprio nome j diz, uma ferramenta para facilitar a construo de queries SQL.

Nesta janela podemos alterar a query da forma que precisarmos e ainda test-la antes de confirmar no boto 'OK'. Clique em 'Execute Query' para testar o retorno da query informada perceba que os dados retornados sero exibidos num grid dentro desta mesma janela. Depois clique em 'OK'.

Vamos ento configurar o nosso formulrio principal da seguinte forma:

Agora vamos ligar o nosso ListBox aos dados do BD. Para isso, precisamos definir 3 propriedades para ele: DataSource, DisplayMember e ValueMember. Clique na propriedade DataSource e selecione a tabela contatos, conforme a figura:

Fazendo isso, ser criado um objeto do tipo BindingSource chamado contatosBindingSource e este objeto ser atribudo propriedade DataSource. Com isso, estamos configurando que os itens do ListBox sero carregados a partir da tabela contatos.

A propriedade DisplayMember indica qual coluna ser exibida no ListBox. Clique nela e selecione a coluna nome. E a propriedade ValueMember indica qual coluna ser usada para indicar os valores dos itens do ListBox. Clique nela e selecione a coluna id. Verifique se no evento Load do formulrio est definido o cdigo abaixo - se no estiver, escreva-o.

Este cdigo ser executado assim que o nosso formulrio principal for exibido pela aplicao (evento Load). Nele estamos dizendo para o TableAdapter preencher (Fill) o DataTable contatos (que est definido dentro de

ambprog_databoundDataSet) com os dados retornados pela query da sua propriedade CommandText. Antes de executar nossa aplicao, execute o script abaixo no SQL Server Management Studio para que alguns registros sejam inseridos na tabela contatos.
use ambprog_databound go INSERT INTO contatos(nome,sexo,telefone,email,ehDoIFRN) VALUES('Joo','M','4321-5678','joao@gmail.com',0) INSERT INTO contatos(nome,sexo,telefone,email,ehDoIFRN) VALUES('Ana','F','1122-3344',null,1) INSERT INTO contatos(nome,sexo,telefone,email,ehDoIFRN) VALUES('Cludia','F','2211-4455',null,0)

Agora execute sua aplicao e verifique se os registros esto sendo exibidos no ListBox. Perceba que os registros esto sendo exibidos na ordem em que foram inseridos no BD. Insira a instruo ORDER BY na propriedade CommandText do contatosTableAdapter de forma que os registros fiquem ordenados pela coluna nome.