Acesso a Banco de Dados

38
Colégio Técnico de Limeira - COTIL Depto. De Informática Introdução ao Microsoft Visual Basic 2005 Prof. José Alberto Matioli jan-09 1/38 Um Projeto em VB.NET com Banco de Dados Visual Basic 2005 Express e o Data Form Wizard O Visual Basic 2005 Express Edition não tem o Data Form Wizard como o Visual Studio. Mas há uma forma fácil de criar projetos que acessam bancos de dados. Para este tutorial, criaremos um projeto simples de Address Book (Agenda). Os dados virão de um Banco de Dados Access. Baixe o banco de dados antes de iniciar esta lição. Uma vez que você salvou o banco de dados no seu computador, você pode começar. Baixe o Banco de Dados Access a ser usado neste tutorial em: http://www.sengi.com.br/matioli/apostilas/vb2005/Downloads/AddressBook.rar VB.Net oferece vários meios de conectar a um banco de dados ou um data source. A tecnologia usada para interagir com um banco de dado ou data source é chamada ADO.NET. A sigla ADO significa Active Data Objects. De forma bem simples, podemos dizer que a tecnologia ADO.NET é uma coleção de classes que nos permitem acessar inúmeros sistemas de banco de dados diferentes. A tecnologia ADO é formada por cinco classes bases: Connection Command DataReader DataSet DataAdapter Veremos apenas o que são estes objetos e como usá-los, nas sessões seguintes. Mas podemos ter nossa primeira experiência como o ADO.NET criando um projeto simples de Address Book (Agenda). Tudo que faremos é ver como usar o ADO para abrir o banco de dados que você baixou, e navegar pelos registros que já existem nele. Usaremos um Wizard (Assistente) para criar um programa que leia o banco de dados e permita-nos navegar nele. O Wizard fará a maior parte do trabalho para nós, e criará os controles que permitam aos usuários mover através do banco de dados. O Form que criaremos se parecerá com este quando tiver terminado:

Transcript of Acesso a Banco de Dados

Page 1: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 1/38

Um Projeto em VB.NET com Banco de Dados

Visual Basic 2005 Express e o Data Form Wizard

O Visual Basic 2005 Express Edition não tem o Data Form Wizard como o Visual Studio. Mas há uma forma fácil de criar projetos que acessam bancos de dados. Para este tutorial, criaremos um projeto simples de Address Book (Agenda). Os dados virão de um Banco de Dados Access. Baixe o banco de dados antes de iniciar esta lição. Uma vez que você salvou o banco de dados no seu computador, você pode começar.

Baixe o Banco de Dados Access a ser usado neste tu torial em:

http://www.sengi.com.br/matioli/apostilas/vb2005/Do wnloads/AddressBook.rar

VB.Net oferece vários meios de conectar a um banco de dados ou um data source. A tecnologia usada para interagir com um banco de dado ou data source é chamada ADO.NET. A sigla ADO significa Active Data Objects. De forma bem simples, podemos dizer que a tecnologia ADO.NET é uma coleção de classes que nos permitem acessar inúmeros sistemas de banco de dados diferentes. A tecnologia ADO é formada por cinco classes bases:

Connection

Command

DataReader

DataSet

DataAdapter

Veremos apenas o que são estes objetos e como usá-los, nas sessões seguintes. Mas podemos ter nossa primeira experiência como o ADO.NET criando um projeto simples de Address Book (Agenda). Tudo que faremos é ver como usar o ADO para abrir o banco de dados que você baixou, e navegar pelos registros que já existem nele.

Usaremos um Wizard (Assistente) para criar um programa que leia o banco de dados e permita-nos navegar nele. O Wizard fará a maior parte do trabalho para nós, e criará os controles que permitam aos usuários mover através do banco de dados. O Form que criaremos se parecerá com este quando tiver terminado:

Page 2: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 2/38

Clicando os botões no topo, você pode navegar através do banco de dados.

Criando um Projeto de Banco de Dados em VB .NET

Vamos começar nosso projeto de Banco de Dados. Portanto, uma vez que você tem seu software VB aberto, faça o seguinte:

• Clique no menu File > New Project

• Selecione Windows Application , e então dê o Nome de Agenda . Clique OK

• Localize o Solution Explorer a direita da tela (se não estiver visível, clique no menu View > Solution Explorer. Ou pressione as teclas Ctrl + R .) Você deverá ver isto:

Page 3: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 3/38

• Precisamos selecionar um Data Source. Para isso clique em Data Sources na

parte inferior do Solution Explorer.

• Para adicionar um novo Data Source, clique no Link. Quando fizer isso, você verá

uma tela de boas vindas ao Data Source Configuration Wizard, Apenas clique Next, para ir para a tela abaixo:

Page 4: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 4/38

Você deseja conectar a um arquivo de banco de dados Local. Portanto selecione esta opção, e clique Next.

No próximo passo, você deve informar o Wizard onde está seu banco de dados. Portanto clique no botão Browse, e aponte onde se encontra, no seu computador, o banco de dados que baixou para este tutorial. Então clique Next.

O Wizard então analizará o seu banco de dados, e apresentará suas tabelas, campos e objetos. Se você baixou nosso banco de dados, seu Wizard deve se parecer com este:

Page 5: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 5/38

Clique no box Tables , e isso marcará todos os itens abaixo dele. Observe o DataSet name: AddressBookDataSet. Você aprenderá o que é um DataSet nas próximas sessões. Por enquanto, apenas clique o botão Finish.

Quando clicar Finish, o Wizard começará a trabalhar. Quando ele terminar, parecerá que nada mudou. Mas observe o Solution Explorer:

Page 6: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 6/38

A área Data Sources do Solution Explorer agora apresenta informações sobre o seu banco de dados. Clique no símbolo de mais próximo a tblContacts:

Todos os Campos no banco de dados Address Book agora serão apresentados.

Page 7: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 7/38

Criando um Form de Banco de Dados

Na seção anterior, você viu como abrir um Data Source. Os campos do banco de dados lhe foram disponibilizados no VB.NET. Nesta parte, veremos como construir um form para que você possa ver e navegar através dos dados.

Na última parte, você teve a janela de Data Sources apresentada. Esta (se você não puder vê-la, clique no menu Data. Então clique em Show Data Sources):

Para adicionar um campo ao seu Form, clique em um deles na lista. Mantenha o botão esquerdo do mouse pressionado, e arraste-o sobre o seu form:

Page 8: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 8/38

Na imagem anterior, o campo Nome está sendo arrastado para o Form. Observe que o cursor do mouse mudou.

Quando seu campo estiver sobre o Form, solte o botão esquerdo do mouse. Um textbox e um label será adicionado. Haverá duas outras coisas, observe: aparecerá uma barra de navegação no topo do form, e um objeto estranho aparecerá na área de objetos na parte inferior:

Vamos explorar os Objetos nas seções seguintes. Mas observe a barra de Navegação em azul. Execute seu programa pressionando F5. Você deverá ver isto:

Clique nas setas de Navegação para se mover pelo banco de dados. Quando tiver se divertido com os controles, pare a execução, e retorne ao modo Design View.

Arraste e Solte mais campos para o seu form. Mas não alinhe-os ainda. Veremos uma forma estúpidamente fácil de fazer isso. Uma vez que tiver arrastado os campos para o seu form, ele poderá se parecer com isto:

Page 9: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 9/38

Tenho certeza que você concordará - este form está muito bagunçado. Mas há uma forma muito fácil de alinhar todos os controles. Tente isto:

• Clique num Textbox com o botão esquerdo do mouse

• Pressione a tecla Ctrl e selecione um segundo TextBox

• Com a tecla Ctrl pressionada, clique cada Textbox que deseja alinhar

• Quando todos os Textboxes estiverem selecionados, clique no menu Format no topo da tela

• No menu Format selecione Align > Lefts . O lado esquerdo dos Textboxes se alinharam automáticamente

• No menu Format selecione Vertical Spacing > Make Equal. O espaço entre cada textbox então será o mesmo.

O campo Obs (observação) é um campo Memo, que pode conter uma grande quantidade de texto. Portanto mude a propriedade Multiline textbox para TRUE e redimensione o textbox para que o texto seja apresentado em múltiplas linhas.

Com seus novos controles adicionados, bem alinhados, pressione F5 para executar o programa. Você pode ter algo parecido com isto:

Page 10: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 10/38

Clique nos icones de Navegação para mover para frente e para trás através do seu banco de dados.

Page 11: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 11/38

Criando seu próprio código para Banco de Dados em VB .NET

Nesta seção, daremos uma olhada nos objetos que você pode usar para abrir e ler dados de um Banco de Dados. Utilizaremos nosso banco de dados Access, o AddressBook, e recriaremos o que o Wizard tinha feito. Desta forma você verá com seus próprios olhos o que estava por trás dos panos quando utilizamos o Wizard.

Portanto, feche qualquer projeto, e crie um novo. Dê o nome que quiser ao projeto, e mãos a obra.

O Objeto Connection

O Objeto Connection é o que você precisa se quiser conectar a um banco de dados. Há inúmeros objetos connection diferentes, e o que você vai usar depende do tipo de banco de dados que estiver conectando. Como vamos conectar a um banco de dados access, precisaremos de um objeto de conexão chamado OLE DB

OLE é abreviação de Object Linking and Embedding, e ele é basicamente um conjunto de objetos (objetos COM) "empacotados" que lhe permitem conectar a data sources em geral, e não apenas a bancos de dados. Você pode usá-lo, por exemplo, para conectar arquivos textos, SQL Server, email, e muito mais.

Há diferentes objetos OLE DB (chamados data providers), mas o que usaremos se chama "Jet ". Outros são SQL Server e Oracle.

Agora coloque um botão no seu form. Mude a propriedade Name para btnLoad . Dê um duplo clique no botão para abrir a janela de código. Adicione a seguinte linha de código:

Dim con As New OleDb.OleDbConnection

Se estiver usando Visual Baisc 2005 Express Edition, você pode ver uma linha de sublinhado aparecer na linha de código. Isso é porque você precisa primeiro adicionar uma referência ao Objetos de Dados. Faça assim:

• Clique no menu Project

• Então clique Add Reference

• Da caixa de diálogo, selecione a guia .NET. Role para baixo e selecione o item System.Data

• Clique OK.

Page 12: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 12/38

Bem no topo da sua janela de código, antes de Public Class Form1 , digite o seguinte:

Imports System.Data

Isto permitirá que você trabalhe com vários objetos de Banco de Dados. Sua janela de código deverá se parecer com isto:

Seja qual for a versão que você tiver, no entanto, a variável con agora contém o Objeto Connection . Observe que há um ponto ( . ) após a parte OleDB. Você terá então, ao digitar o ponto, uma lista de opções de onde poderá selecionar OleDbConnection. Este é o objeto que você usa para conectar a um Banco de Dados Access.

Definindo uma String de Conexão

Há Propriedade e Método associados como o Objeto Connection, é claro. Começaremos com a propriedade ConnectionString. Ela pode receber MUITOS parâmetros. Felizmente, precisaremos só de alguns.

Precisamos passar duas coisas para o nosso novo Objeto Connection: a tecnologia que pretendemos usar para fazer a conexão com o nosso banco de dados; e onde o banco de dados está. (Se seu banco de dados for protegido por senha e nome de usuário, você deverá adicionar estes dois parâmentros. O nosso não tem, portanto só precisaremos passar dois parâmetros.)

A tecnologia é chamada Provider , e você usará "Data Source " para especificar onde seu banco de dados está. Isto deve ser entrado na mesma linha, e não em duas como mostrada abaixo. Portanto adicione esta linha ao seu código:

con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0 ;Data Source = C:\AddressBook.mdb "

Observe as duas partes, separadas por um ponto-e-vírgula:

1a. Parte: PROVIDER=Microsoft.Jet.OLEDB.4.0 2a. Parte: Data Source = C:\AddressBook.mdb

Page 13: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 13/38

A primeira parte especifica qual provedor queremos usar para fazer a conexão (JET). A segunda parte, digitada após o ponto-e-vírgula, indica onde está o banco de dados. No código anterior, o banco de dados estava no drive C, no diretório raiz. O nome do arquivo Access que queremos conectar se chama AddressBook.mdb . (Observe que "Data Source " são duas palavras, e não uma.)

Estamos assumindo que você copiou o banco de dados AddressBook para o diretório raiz do seu drive C. Se você tiver copiado-o para outra pasta, mude a parte "Data Source". Por exemplo, se você copiou-o para uma pasta chamada "database" você deverá colocar isto:

Data Source = C:\databases\AddressBook.mdb

Em seu código, no entanto, ConnectionString é uma propriedade da variável con . A variável con guarda nosso Objeto Connection. Estamos passando na Connection String o nome do provider e o caminho para o banco de dados.

Abrindo a Conexão

Agora que temos uma Connection String, podemos prosseguir e abrir o banco de dados. Isto é muito fácil - apenas use o método Open do Objeto Connection:

con.Open( )

Uma vez aberta, a conexão terá que ser fechada alguma hora. Neste momento, apenas use o metodo Close:

con.Close( )

Adicione as próximas quatro linha ao seu código:

con.Open()

MsgBox("Agora um Conexão com o Banco de Dados está aberta!")

con.Close()

MsgBox("A Conexão com o Banco de Dados agora está f echada!")

Teste seu novo código executando seu programa. Clique no botão no form e duas caixas de mensagem deverá aparecer. Se elas não aparecerem, certifique-se que seu Data Source está correto. Se não estiver, você poderá receber esta mensagem de erro:

Page 14: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 14/38

A mensagem de erro é muito vaga e não diz muita coisa ao usuário final. Mas o que ela está dizendo é que ele, o programa, não pode encontrar o caminho para o banco de dados, portanto ele não pode Abrir a conexão. A linha con.Open no seu código ficarã destacada em verde. Você precisa especificar o caminho correto para o seu banco de dados. Quando tiver feito, verá as caixas de mensagens do seu código, e não esta mensagem enorme de erro mostra acima.

Agora que abrimos uma conexão com o banco de dados, precisamos ler as informações dele. É aqui entram o DataSet e o DataAdapter.

Data Sets e Data Adapters Na parte anterior, você aprendeu como setar um Objeto Connection. Este objeto é necessário para que você possa abrir uma conexão com o Banco de Dados. Mas só isso não basta. O dado do banco de dados precisa ser armazenado em algum lugar, para que possamos manipulá-lo.

ADO.NET usa uma coisa chamado DataSet para guardar toda a informação do banco de dados (você pode usar também um DataTable, se o que quiser é apenas ler as informações, e não gravar no banco de dados). Mas o DataSet ( e Data Table) conterão uma cópia da informação que veio do banco de dados.

O DataSet não é uma coisa que possa desenhar no seu form, como um Button ou um Textbox. O DataSet é algo invisível para você , só existe na memória. Imagine um grid com linhas e colunas. Cada linha imaginária do DataSet representa uma Linha de informação em seu banco de dados Access. E cada coluna imaginária representa uma Coluna de informação em seu banco de dados Access (que chamamos Campo).

Isto, então, é um DataSet. E o que é um Data Adapter?

O Objeto Connection e o DataSet não se "enxergam", um não "conversa" com o outro. Eles precisam de alguém que faça a comunicação entre eles. Este intermediário é o Data Adapter. O Data Adapter, usando seu Objeto Connection, contacta o Banco de Dados,

Page 15: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 15/38

que então executa uma query que você programador definiu. Os resultados desta query são armazenados no DataSet.

Os objetos Data Adapter e DataSet você cria deste jeito:

Dim ds As New DataSet Dim da As OleDb. OleDbDataAdapter

da = New OleDb. OleDbDataAdapter( sql, con )

Vamos ver o significado deste código. Primeiro o Data Adapter.

O Data Adapter

O Data Adapter é uma propriedade do objeto OLEDB, por isso o ponto entre os dois:

OleDb.OleDbDataAdapter

Nós estamos passando este objeto para a variável chamada da. Esta variável guardará uma referência para o Data Adapter.

Enquanto na segunda linha no código acima definimos uma referência para o Data Adapter, a terceira linha cria um novo objeto Data Adapter. Você precisa colocar duas coisas dentro dos parênteses da declaração do Objeto: Sua string SQL (que veremos em breve), e seu objeto connection. Nosso Objeto Connection está armazenado na variável que chamamos de con . (Como toda variável você pode dar o nome que quiser. Demos um nome curto e fácil de memorizar). Então você passa o New Data Adapter para sua variável (da no nosso caso):

da = New OleDb. OleDbDataAdapter( sql , con )

Precisamos de mais alguma coisa ainda. O nome sql que está dentro do parênteses é o nome de uma variável. Ainda não a definimos. Vamos dar uma olhada no SQL logo, logo. Mas não se esqueça do que o Data Adapter faz: Agir como intermediário entre o Objeto Connection e o Data Set.

Structured Query Language

SQL é abreviação de Structured Query Language, e é o meio que utilizamos para consultar e escrever em bancos de dados (não só no Access). O básico é muito fácil de aprender. Se você quiser "pegar" todos os registros de uma tabela no banco de dados, você usa a palavra SELECT. Desse jeito:

SELECT * FROM Nome_Tabela

SQL não é case sensitive, portanto a linha acima pode ser escrita assim também:

Page 16: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 16/38

Select * from Nome_Tabela

Mas suas declarações SQL serão mais fáceis de ler se você digitar as palavras-chave em letras maiúsculas. As palavras-chave nas linhas acima são SELECT e FROM. O asterisco significa "Todos os Registros". Nome_Tabela é o nome de uma tabela no seu banco de dados. Assim podemos ler a linha toda assim:

"SELECT todos os registros FROM tabela chamada Nome _Tabela"

Nem sempre você precisará selecionar todos ( * ) os registros do seu banco de dados. Você pode selecionar apenas as colunas que você precisa. O nome da tabela no seu banco de dados é tblContatos . Se quiser selecionar apenas as colunas nome e sobrenome desta tabela, podemos especificar isto na nossa string SQL:

SELECT tblContatos.Nome, tblContatos.Sobrenome FROM tblContatos

Quando esta declaração SQL é executada, apenas as colunas Nome e Sobrenome do banco de dados será retornados:

Há muito mais comandos SQL, mas para o nosso propósito isto é suficiente.

Uma vez que queremos SELECT todos (*) registros da tabela chamada tblContatos, passamos esta string para a variável string que chamamos de sql:

sql = "SELECT * FROM tblContatos"

Assim, adicione o seguinte código ao seu projeto de banco de dados:

Dim ds As New DataSet Dim da As OleDb.OleDbDataAdapter Dim sql As String

sql = "SELECT * FROM tblContatos" da = New OleDb.OleDbDataAdapter(sql, con)

Se estiver usando a versão 2005 Express, você pode ver um sublinhado em zig-zag sob a palavra DataSet. Isto porque você precisa definir uma referência a alguma coisa chamada System.Xml.dll. Para fazer isto, na barra de menu clique em Project > Add Reference . Na guia .Net, na caixa de diálogo que aparece, role para baixo e clique em Syste.Xml.dll. Então clique OK.

Agora que o Data Adapter selecionou todos os registros da tabela em seu banco de dados, precisamos colocá-los em algum lugar estes registros e será no DataSet .

Preenchendo o DataSet

O Data Adapter pode Preencher um DataSet com os registros de uma Tabela. Você precisa de apenas uma linha de código para fazer isto:

Page 17: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 17/38

da.Fill(ds, "AddressBook")

Assim que tiver digitado o nome do seu Data Adapter (da para nós), você verá uma lista de propriedades e métodos. Selecione Fill na lista, então digite um par de parênteses. Dentro dos parêntese, você precisa de duas coisas: o Nome do seu objeto DataSet (ds, no nosso caso), e um nome de identificação. Este nome de identificação pode ser qualquer coisa que você quiser. Mas isso é apenas para identificar este preenchimento do Data Adapter em particular. Poderíamos tê-lo chamado até de "Sandwich com Bacon ", se quiséssemos:

da.Fill(ds, "Sandwich com Bacon")

Este código acima também funciona. Mas é melhor usarmos nomes mais curtos e mais descritivos que "Sandwich com Bacon "!

Adicione uma nova linha após a criação do Data Adapter:

da = New OleDb.OleDbDataAdapter(sql, con) da.Fill(ds, "AddressBook")

É isto. O DataSet (ds ) agora será preenchido como os registros que selecionamos da tabela chamada tblContatos . Há apenas um pequeno problema - ninguém pode ver os dados ainda!

Apresentando os Data no DataSet

Na seção anterior, vimos o que são Data Adapters e DataSets. Criamos um Data Adapter para que ele pudesse preencher um DataSet com registros do nosso Banco de Dados. O que queremos fazer agora é apresentar os registros num Form, para que as pessoas possam vê-los. Portanto faça isto:

• Adicione dois textoboxes ao seu form

• Altere a propriedade Name de seus textboxes para txtNome e txtSobrenome

• Volte para a sua janela de código

• Adicione as duas linhas a seguir:

txtNome.Text = ds.Tables("AddressBook").Rows(0).Ite m(1) txtSobrenome.Text = ds.Tables("AddressBook").Rows(0 ).Item(2)

Você pode adicioná-los após a linha que fecha a conexão com o banco de dados. Uma vez que tiver sido preenchido o DataSet, a conexão com o banco de dados pode ser fechada.

Page 18: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 18/38

Antes de comentarmos o código, execute seu programa e clique no botão. Você deverá ver "John Smith" apresentado em seus dois textboxes.

Agora, varmos examinar o código que atribui os dados do DataSet aos textboxes. A primeira linha foi esta:

txtNome.Text = ds .Tables(" AddressBook ").Rows(0).Item(1)

O queremos aqui é atribuir o conteúdo de um campo da tabela do banco de dados a um textbox. Portanto após o sinal de igual, você digitou o nome do seu DataSet (ds para nós). Após um ponto, selecionou Tables na lista que apareceu. A propriedade Tables precisa de algo entre os parênteses e não é o nome de uma tabela no seu banco de dados. Ele é o identificador que você usou com o Data Adapter Fill. Usamos o identificador "AddressBook ". Se você tivesse usado "Sadwich com Bacon" então faríamos assim:

ds.Tables(" Sandwich com Bacon ")

Mas nós não usamos, portanto nosso código é:

ds.Tables(" AddressBook ")

Digite um ponto e você verá outra lista ser apresentada. Selecione Rows desta lista. Entre parênteses terá que colocar um número. Este é o número de uma linha (Row) do DataSet. Nós queremos a primeira linha, a qual é a linha zero no DataSet:

ds.Tables("AddressBook"). Rows( 0)

Digite um ponto após Rows(0) e uma lista aparecerá novamente. Para identificar uma coluna (Column) do DataSet, você usa Item . Dentro dos parênteses, você digita qual coluna você quer:

ds.Tables("AddressBook").Rows(0). Item(1)

No nosso banco de dados Access, coluna zero é usada para um campo ID. A coluna Nome é a segunda coluna no nosso banco de dados Access. Como a coleção (collection) Item é inciada em zero, a coluna que queremos é o item 1 no DataSet.

Você pode também se referir ao nome da coluna pelo próprio nome dela, ao invés de um número. Assim você faria:

ds.Tables("AddressBook").Rows(0). Item("Nome" ) ds.Tables("AddressBook").Rows(0). Item("Sobrenome" )

Se você pegar o nome da coluna errada, então o VB gerará um erro. Uma imagem pode ajudar a clarear as coisas. A imagem a seguir mostra quais os items e rows há no banco de dados.

Page 19: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 19/38

A imagem mostra quais são as Rows e quais são os Items na tabela do banco de dados Access. Vemos que os Items estão na vertical e Rows estão na horizontal.

Porém, nós queremos ser capazes de navegar através da tabela. Queremos poder clique um botão e ver o próximo registro. Ou clicar outro botão e ver o registro anterior. Você pode fazer isso incrementando o numero de Row. Para ver o próximo registro, poderíamos fazer isto:

txtNome.Text = ds.Tables("AddressBook"). Rows( 1).Item(1) txtSobrenome.Text = ds.Tables("AddressBook"). Rows( 1).Item(2)

O próximo registro então será:

txtNome.Text = ds.Tables("AddressBook"). Rows( 2).Item(1) txtSoome.Text = ds.Tables("AddressBook"). Rows( 2).Item(2)

Portanto incrementando e decrementando o número de Row, você pode navegar através dos registros.

Navegando em um Banco de Dados com VB .NET

Você viu na seção anterior que você pode navegar através dos registros de um banco de dados incrementando e decrementando o número da linha (Row) do DataSet. Nesta

Page 20: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 20/38

seção, veremos um exemplo mais prático de como isso pode ser feito. É melhor você começar um novo projeto para isso. Com um novo form aberto, faça o seguinte:

• Adicione dois Textboxes. Altere a propriedade Name para txtNome e txtSobrenome

• Adicione quatro Buttons. Altere as propriedade Name e Text para estas:

Button Name Button Text

btnProximo Próximo Registro

btnAnterior Registro Anterior

btnPrimeiro Primeiro Registro

btnUltimo Último Registro

Quando tiver feito, seu form deverá se parecer com isto:

Pressione F7 para ver sua janela de código, e adicione o seguinte código na área Declarações do Form1 :

(Usuários do VB 2005 Express Edition: não se esqueçam de adicionar a referência! Clique Project > Add References . Localize System.Data.dll e System.Xml.dll na guia .NET. Selecione estes itens e clique OK. Então adicione Imports System.Data bem no topo da sua janela de código.) Seu sódigo deve se parecer com isto:

Page 21: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 21/38

Tudo que você fez até aqui foi setar as variáveis que precisaremos. Há uma para o Objeto Connection, uma para o DataSet, e uma para o Data Adapter. Também setamos duas variáveis Integer (inc e MaxRows ), e uma variável string (sql ).

Quando o Form é carregado, podemos conectar nosso banco de dados, usar o Data Adapter para pegar alguns registros do banco de dados, e então colocar estes registros no DataSet. Assim no evento Form1_Load, adicione o seguinte código:

Você já conhece todo código, exceto estas duas linhas:

Page 22: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 22/38

MaxRows = ds.Tables("AddressBook").Rows.Count – 1

If MaxRows >= 0 then

inc = 0

else

inc = -1

end if

navigaterecords( )

Na variável MaxRows, podemos armazenar quantas linhas há no DataSet. Você obtém a quantidade de linhas no seu DataSet com Rows.Count :

MaxRows = ds.Tables("AddressBook"). Rows.Count - 1

Como vemos, a propriedade Rows tem um método Count. Ele simplesmente conta quantas linhas há no DataSet. Estamos atribuindo este número para uma variável chamada MaxRows . Note que decrementamos em 1, pois como os dados no DataSet é armazenado em forma de array, o primeiro elemento será o zero e o último será o número de registros menos um.

A variável inc começará com 0, se houver registros no BD, ou –1 se o BD estiver vazio. Este valor, -1, será verificado na hora de apresentar os dados para saber se tem dado a ser apresentado.

Você poderá então testar o que há na variável, e ver se o contador inc não foi ultrapassado. Você precisa fazer isso porque o VB gera uma mensagem de erro se tentar ultrapassar a última linha do DataSet. (Versões anteriores do VB tinha as propriedades EOF e BOF, que checavam se havia atingido o End of File (fim do arquivo) e Begin of File (inicio do arquivo). Essas propriedades não existem mais.)

Para navegar através dos registros, vamos usar a variável inc . Somaremos, ou subtrairemos, 1 dela. Então usaremos a variável em Rows no DataSet. É melhor fazer uma subrotina para esse propósito. Assim adicione esta Sub ao seu código:

Private Sub NavigateRecords()

If inc>=0 then

txtNome.Text = ds.Tables("AddressBook").Rows(inc).I tem(1)

txtSobrenome.Text = ds.Tables("AddressBook").Rows(i nc).Item(2)

else

msgbox(“Não há registros!”)

end if

End Sub

Page 23: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 23/38

A parte importante é Rows( inc ). Isto move através das Linhas/Registros no DataSet e então coloca os valores nos dois Textboxes.

O código completo deve se parecer com isto:

Page 24: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 24/38

Programando os Botões para a Navegação

Como Mover para o Próximo Registro

Dê um duplo clique no botão Próximo Registro para acessar o código. Adicione a seguinte declaração If ... Else.

If inc <> MaxRows Then

inc = inc + 1

NavigateRecords()

Else

MsgBox("Não há mais registro")

End If

Estamos checando para ver se o valor de inc não atingiu o valor de MaxRows . Se eles forem iguais então saberemos que atingiu o último registro no DataSet. Neste caso, apenas apresentaremos uma caixa de mensagem. Se eles forem diferentes, estas duas linhas serão executadas:

inc = inc + 1 NavigateRecords()

Primeiro, incrementamos o contador inc em 1. Então chamamos a Sub que definimos na lição anterior:

NavigateRecords()

Nossa Subrotina é onde a ação acontece, e os valores do DataSet são colocados nos textboxes.

Aqui está ela novamente:

Private Sub NavigateRecords()

If inc>=0 then

txtNome.Text = ds.Tables("AddressBook").Rows(inc).I tem(1)

txtSobrenome.Text = ds.Tables("AddressBook").Rows(i nc).Item(2)

else

msgbox(“Não há registros!”)

end if

Page 25: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 25/38

End Sub

A parte que move para o próximo registgro é esta:

Rows( inc )

Antes, tínhamos colocado este código estático:

Rows( 0)

Agora o valor está vindo da variável chamada inc . Uma vez que estamos incrementando esta variável via programação, o valor será alterado a cada vez que o botão for clicado. E assim um registro diferente será apresentado.

Você pode testar o botão Próximo Registro. Execute o programa e clique no botão. Você deverá agora ser capaz de mover através do DataSet. Quando você atingir o fim, deverá ver uma caixa de mensagem dizendo "Não há mais regisgtro".

Nenhum dos outros botões funcionarão ainda, é óbvio. Agora vamos mover para o Anterior.

Como Mover para o Registro Anterior

Para mover para trás no DataSet, precisamos decrementar o contador inc . Ou seja, subtrair 1 da variável inc sempre que o usuário clicar no botão Registro Anterior.

Mas precisamos também checar se inc não passou de zero, que é o primeiro registro no DataSet. Aqui está o código a ser adicionado a btnAnterior :

If inc > 0 Then

inc = inc – 1

NavigateRecords()

Else

MsgBox("Primeiro Registro")

End If

Portanto a declaração If verifica se inc é maior que zero. Se for, é subtraido 1 de inc. Então é chamada a subrotina NavigateRecords( ). Se inc for zero ou menos, então apresentamos uma mensagem.

Quando tiver terminado de adicionar o código, teste seu programa. Clique no botão Registro Anterior primeiro.

Page 26: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 26/38

Como Mover para o Último Registro no DataSet

Para saltar para o último registro no DataSet, você precisa apenas saber quantos registros foram carregados no DataSet - a variável MaxRows no seu código. Você pode então setar o contador inc para aquele valor. Aqui está o código para adicionar ao seu btnUltimo :

If inc <> MaxRows Then

inc = MaxRows

NavigateRecords()

End If

Dentro da declaração If, estamos atribuindo ao contador inc MaxRows, então chamando a subrotina NavigateRecords( ).

Isso é tudo que precisamos fazer. Agora execute seu programa. Clique o botão Último Registro, e você deverá ver o último registro ser apresentado em seus textboxes.

Como Mover para o Primeiro Registro no DataSet

Mover para o primeiro registro é muito fácil. Precisamos apenas atribuir zero ao contador inc , se ele já não estiver com este valor. Então chame a Sub:

If inc <> 0 Then

inc = 0

NavigateRecords()

End If

Adicione o código ao seu btnPrimeiro . Execute seu programa e teste todos os botões. Você deverá ser capaz de mover através dos nomes no banco de dados, e saltar para o primeiro e último registros.

Bom, muito bom. Mas ainda não temos como adicionar novos registros, alterar registros, ou excluí-los. Veremos isso na próxima lição.

Page 27: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 27/38

Adicionar, Atualizar e Deletar Registros Na última seção, você aprendeu como navegar entre os registros em seu DataSet, e como apresentar os registros em Textboxes no seu form. Nesta lição, veremos como adicionar registros, como deletá-los e como atualizar um registro.

Antes de iniciarmos a codificação destes novos botões, é importante entendermos que o DataSet está desconectado do banco de dados. Isso significa que se você estiver adicionando um novo registro, você não estará adicionando-o ao banco de dados: você está adicionando-o ao DataSet ! Similarmente, se você estiver atualizando ou deletando, você estará fazendo isso no DataSet, e NÃO no banco de dados. Após ter feito todas as alterações, você ENTÃO submete estas alterações ao banco de dados. Você faz isso executando um comando em separado.

Você precisará adicionar mais alguns botões ao seu form - cinco ao todo. Altere a propriedade Name dos novos Botões para:

btnAddNew btnCommit btnUpdate btnDelete btnClear

Altere a propriedade Text dos botões para "Adicionar Novo Registro ", "Gravar Alterações ", "Alterar Registro ", "Excluir Registro ", e "Limpar/Cancelar ". Seu form deve se parecer com isto:

Page 28: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 28/38

Começaremos como o botão Alterar Registro.

Alterando um Registro

Para acessar uma coluna em particular (item) numa linha do DataSet, o código é este:

ds.Tables("AddressBook").Rows( 2).Item(1)

Isto deve retornar o conteúdo do item 1 na Linha 2.

Assim como retorna um valor, você pode também setar um valor. Você faria assim:

ds.Tables("AddressBook").Rows( 2).Item(1) = "Jane"

Agora Item 1 Linha 2 conterá o texto "Jane". Isto, porém, não afetará o banco de dados! As alterações só serão feitas no DataSet . Para ilustrar isto, adicione o seguinte código ao seu btnUpdate :

ds.Tables("AddressBook").Rows(inc).Item(1) = txtFir stName.Text ds.Tables("AddressBook").Rows(inc).Item(2) = txtSur name.Text

MsgBox("Registro alterado")

Execute seu programa. "João" deve ser apresentado no seu primeiro textbox, e "Silva" no segundo textbox. Clique dentro dos textboxes e altere de "João" para "Jonas" e de "Silva"

Page 29: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 29/38

para "Souza". (sem as aspas). Agora clique no botão Alterar Registro . Mova para o próximo registro clicando no botão Próximo Registro , e então mova de volta para o primeiro registro. Você deverá ver que o primeiro registro agora é "Jonas Souza".

Feche seu programa, então execute novamente. Ele ainda terá "João Silva". O dado que você alterou foi perdido! Isto porque:

"A alterações foram feitas no DataSet, e não no Ban co de Dados"

Para atualizar o banco de dados, você precisa de algum código a mais. Adicione isso ao seu código (as linhas que estão vermelho)

Dim cb As New OleDb.OleDbCommandBuilder(da)

ds.Tables("AddressBook").Rows(inc).Item(1) = txtFir stName.Text ds.Tables("AddressBook").Rows(inc).Item(2) = txtSur name.Text

da.Update(ds, "AddressBook")

MsgBox("Registro alterado")

A primeira nova linha é esta:

Dim cb As New OleDb.OleDbCommandBuilder( da)

Para atualizar o banco de dados propriamente, você precisa de algo chamado Command Builder . O Command Builder construirá uma string SQL para você. Entre os parênteses, você digita o nome do seu Data Adapter, da no nosso caso. O Command Builder é então armazenado numa variável, a qual foi chamada de cb .

A segunda nova linha é onde a "coisa" acontece:

da.Update(ds, "AddressBook")

A variável da está armazenando seu Data Adapter. Um dos método do Data Adapter é o Update . Entre os parênteses, você precisa fornecer o nome do seu DataSet (ds , para nós). A parte "AddressBook " é opcional. Ele é o nome que demos ao nosso DataSet, e podemos utilizá-lo para evitar qualquer confusão.

O Data Adapter então contactará o banco de dados. Através do Command Builder, o Data Adapter pode então atualizar seu banco de dados com os valores do DataSet.

Sem o Command Builder, no entanto, o Data Adapter não pode executar o trabalho. Tente fazer isso: comente a linha que cria o Command Builder (coloque um apóstofro antes do "D" de Dim). Execute seu programa novamente, e então tente alterar um registro. Você receberá esta mensagem de erro:

Page 30: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 30/38

O erro é porque você não tem um command builder - um Comando Update Válido.

Apague o comentário da linha que cria o Command Builder e a mensagem de erro desaparecerá.

Você deve agora ser capaz de fazer as alterações diretamente no banco de dados (se o arquivo de banco de dados não estiver Read Only).

Teste-o. Execute seu programa, e altere um dos registros. Clique o botão Alterar Registro . Então feche o programa, e execute-o novamente. Você deverá ver suas novas alterações apresentadas nos textboxes.

Page 31: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 31/38

Como Adicionar um Novo Registro

Adicione um Novo Registro

A inclusão de um novo registro é ligeiramente mais complexa. Primeiro, você precisa adicionar uma nova Linha no DataSet, então submeter a nova Linha ao banco de dados.

Mas o botão Adicionar Novo Registro no nosso form é bem simples. A única coisa que ele faz é desativar outros botões, e limpar os textboxes, preparando para uma nova entrada. Aqui está o código para o botão Adicionar Novo Registro :

btnCommit.Enabled = True btnAddNew.Enabled = False btnUpdate.Enabled = False btnDelete.Enabled = False

txtNome.Clear() txtSobrenome.Clear()

txtNome.Focus( )

Assim três botões são desativados quando o botão Adicionar Novo Registro é clicado, e um é ativado. O botão que é ativado é o botão Gravar Alterações. A propriedade Enabled de btnCommit é setado para True (verdade). Mas, para isso funcionar, você precisa setá-la para False quando o formulário é carregado. Assim, retorne ao seu Form. Clique em btnCommit para selecioná-lo. Então localize a propriedade Enabled na caixa de propriedades. Defina-a para False . Quando o Form for carregado, o botão será desativado.

O botão Limpar/Cancelar pode ser usado para reverter o processo de ligar/desligar botões. Assim adicione este código ao botão btnClear:

btnCommit.Enabled = False btnAddNew.Enabled = True btnUpdate.Enabled = True btnDelete.Enabled = True

inc = 0 NavigateRecords()

Estamos desligando o botão Gravar Alterações , e ativando os outros três. As outras duas linhas apenas se certificam de que apresentaremos o primeiro registro novamente, após o botão Limpar/Cancelar ser clicado. Caso contrário os textboxes ficarão todos em branco.

Page 32: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 32/38

Para adicionar um novo registro ao banco de dados, usaremos o botão Gravar Alterações . Portanto dê um duplo clique no botão btnCommit para acessar seu código. Adicione o seguinte:

Dim cb As New OleDb.OleDbCommandBuilder(da) Dim dsNewRow As DataRow

dsNewRow = ds.Tables("AddressBook").NewRow()

dsNewRow.Item("FirstName") = txtFirstName.Text dsNewRow.Item("Surname") = txtSurname.Text

ds.Tables("AddressBook").Rows.Add(dsNewRow)

da.Update(ds, "AddressBook")

MsgBox("Novo registro adicionado ao banco de dados" )

btnCommit.Enabled = False btnAddNew.Enabled = True btnUpdate.Enabled = True btnDelete.Enabled = True

O código foge um pouco ao que estamos habituado, mas detalharemos a seguir para entendê-lo melhor.

Primeiro setamos um Command Builder , como já fizemos antes. A próxima linha é esta:

Dim dsNewRow As DataRow

Se você quiser adicionar uma nova linha no seu DataSet, você precisará de um objeto DataRow . Esta linha simplesmente define uma variável chamada dsNewRow . A variável é do tipo DataRow.

Para criar um novo objeto DataRow, utilizamos a linha a seguir:

dsNewRow = ds.Tables("AddressBook").NewRow()

Estamos dizendo, "Crie um Novo Objeto no DataSet AddressBook, e armazene-o na variável chamada dsNewRow." Como você pode ver, NewRow() é um método de ds.Tables . Use este método para adicionar linhas ao seu DataSet.

Os valores que queremos armazenar nas linhas vem dos textboxes. Para isso temos estas duas linhas:

dsNewRow.Item("Nome") = txtNome.Text dsNewRow.Item("Sobrenome") = txtSobrenome.Text

O objeto dsNewRow que criamos tem uma propriedade chamada Item . Esta é como a propriedade Item que você usou antes. Ela representa uma coluna no seu DataSet. Poderíamos ter escrito assim, ao invés da forma anterior:

Page 33: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 33/38

dsNewRow. Item(1) = txtNome.Text dsNewRow. Item(2) = txtSobrenome.Text

A propriedade Item está agora usando o número de índice das colunas do DataSet, ao invés dos nomes das colunas. O resultado é o mesmo, ou seja: armazenar novos valores nesta propriedades. Estamos armazenando o texto dos textboxes em nossa nova Row.

Agora precisamos apenas chamar o método que adiciona a Linha ao DataSet:

ds.Tables("AddressBook").Rows. Add( dsNewRow )

Para adicionar a linha, use o método Add da propriedade Rows do DataSet. Dentro dos parênteses, você precisa fornecer o nome do seu objeto DataRow (a variável dsNewRow, no nosso caso).

Você já deve saber o que o resto do código faz. Aqui está a próxima linha:

da.Update(ds, "AddressBook")

Novamente, estamos apenas usando o método Update do Data Adapter. O resto do código apenas apresenta uma caixa de mensagem, e reseta o botão.

Racapitulando, para adicionar uma nova linha (Row) em um DataSet:

• Crie uma variável DataRow

• Crie um Objeto desta variável usando o método NewRow() da propriedade Tables do DataSet

• Atribua valores a Items na nova linha

• Use o método Add do DataSet para adicionar a nova linha

Um pouco mais complicado do que estamos acostumado, mas funciona. Teste seu programa. Clique no botão Adicionar Novo Registro . Os textboxes devem ficar em branco, e três botões serão desativados. Entre com novo Nome e Sobrenome, e então clique no botão Gravar Alterações. Você deve ver uma caixa de mensagem dizendo que um novo registro foi adicionado ao banco de dados. Para ver o novo registro, pare o programa, e execute-o novamente. O novo registro estará lá.

Page 34: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 34/38

Deletar um Registro de um Banco de Dados

Deletando Registros de um Banco de Dados

O código para deletar um registro é um pouco mais fácil que o último. Dê um duplo-clique no botão btnDelete e adicione o seguinte código:

Dim cb As New OleDb.OleDbCommandBuilder(da) ds.Tables("AddressBook").Rows(inc).Delete() MaxRows = MaxRows - 1 If MaxRows >= 0 Then

inc = 0 Else

inc = -1 End If NavigateRecords() da.Update(ds, "AddressBook")

Você já aprendeu a maioria disso antes. Primeiro definimos um Command Builder. Então acrescentamos esta linha:

ds.Tables("AddressBook").Rows(inc). Delete()

Exatamente como há um método Add da propriedade Rows do DataSet, há também um método Delete . Você não precisa informar nada dentro dos parênteses, desta vez. Especificamos qual linha queremos deletar com:

Rows( inc )

A variável inc está informando qual linha em particular estamos posicionados. Quando o método Delete é chamado, é esta linha que será deletada.

Porém, ela será deletada apenas do DataSet. Para deletar a linha correspondente do banco de dados, novamente fazemos isso:

da.Update(ds, "AddressBook")

O Command Builder, em conjunto com o Data Adapter, cuidará de deletar. Tudo o que você precisa fazer é chamar o método Delete do Data Adapter.

A linha MaxRows no código apenas deduz 1 da variável. Isto apenas para sincronizar o número de linha no DataSet com o número que temos guardado na variável MaxRows.

Page 35: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 35/38

Também resetamos a variável inc para zero ou menos um, e chamamos a subrotina NavigateRecords() . Isto significa que após deletar um registro, voltaremos a apresentar o primeiro registro.

Teste o programa. Clique o botão Próximo Registro algumas vezes para mover para o registro a ser excluido. Então clique o botão Excluir Registro . O registro será excluido do DataSet E do banco de dados. O registro que será então apresentado será o primeiro.

Outra coisa que você pode fazer é apresentar uma caixa de mensagem perguntando ao usuário se ele realmente que excluir este registro.

Aqui está o resultado:

Para fazer isso no seu programa, adicione o seguinte código no início código do botão btnDelete:

If MessageBox.Show("Tem certeza que deseja Excluir este Registro?", _ "Excluir", MessageBoxButtons.YesNo, _ MessageBoxIcon.Warning) = DialogResult.No Then

MsgBox("Operação Cancelada") Exit Sub

End If

As três primeiras linhas de código são na verdade uma linha. O sublinhado foi usado para quebrar as linhas, para ajustar à largura desta página.

Estamos usando uma nova função de caixa de mensagem:

MessageBox.Show()

Dentro dos parênteses, especificamos a mensagem a apresentar, seguida por um título para a caixa de mensagem. Então temos isso:

MessageBoxButtons. YesNo

Você não precisa decorar tudo; pode apenas selecionar as opções desejadas de uma lista. O que essa opção faz é apresentar os botões Yes e No (Sim e Não) na sua caixa de mensagem.

Após digitar uma vírgula, selecionamos o ícone MessageBoxIcon.Warning da lista de opções.

Page 36: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 36/38

Mas você precisa checar qual botão o usuário clicou. Isto é feito com isto:

= DialogResult.No

Novamente, você selecionou de uma lista. Queremos checar se o usuário clicou no botão No (Não). Isto significa que o usuário mudou de idéia, e não quer Excluir o registro. Um valor No será retornado, o qual estamos checando na declaração IF.

O código para a delcaração IF propriamente é este:

MsgBox("Operação Cancelada") Exit Sub

Isto apresentará outra caixa de mensagem para o usuário. E o mais importante, a subrotina será abandonada: nós não queremos que o resto do código de Exclusão seja executado se o usuário clicar no botão No.

Isto já basta para nossa introdução a programação para banco de dados. Você não viu apenas como criar um programa que acesse banco de dados usando o Wizard, mas como escrever código para fazer isso. Há ainda muita coisa sobre programação para banco de dados, mas nosso curso é para iniciantes, portanto ficaremos por aqui.

Page 37: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 37/38

Um Projeto de Banco de Dados em VB .NET

Termine o programe que você vinha desenvolvendo. No momento, você apresenta apenas o Nome e Sobrenome. Adicione textboxes para que os seguintes campos do banco de dados sejam apresentados:

FirstName Surname Address1 Address2 Address3 Postcode

Phone Email Notes

Quando você tiver terminado, seu form poderá se parecer com isto (mas se sinta a vontade para melhorar o design):

Page 38: Acesso a Banco de Dados

Colégio Técnico de Limeira - COTIL Depto. De Informática

Introdução ao Microsoft Visual Basic 2005

Prof. José Alberto Matioli jan-09 38/38

Quando o programa tiver completo, um usuário deverá ser capaz de fazer o seguinte:

• Navegar através dos registros de um em um (para frente e para trás)

• Saltar para o último registro

• Saltar para o primeiro registro

• Alterar um registro

• Adicionar um novo registro

• Excluir um registro

• Cancelar a operação de adição de um novo registro

NÃO use o Assistente (Wizard) para este projeto. Escreva seu próprio código. Há bastante coisa a fazer, mas lhe dará uma boa prática.