Você está na página 1de 23

Índice

1. Como criar um Banco de Dados ........................................................................................... 2


2. DataSet................................................................................................................................... 5
2.1. Criando um DataSet......................................................................................................... 5
2.2. Corrigindo o caminho de uma String de Conexão ............................................................ 7
2.3. Criando SQLs e Stored Procedures num TableAdapter .................................................... 9
2.4. Criando uma Stored Procedure a partir do VS2005 ........................................................ 14
3. Desenvolvendo aplicações de acesso a dados utilizando TableAdapter e BindingSource 15
3.1. Principais comandos de um BindingSource.................................................................... 17
4. Desenvolvendo aplicações de acesso a dados utilizando TableAdapter ............................ 18
4.1. Utilizando SQL.............................................................................................................. 18
4.2. Utilizando Stored Procedures......................................................................................... 20
4.3. Desenvolvendo procedimentos de acesso a dados .......................................................... 21
4.3.1. Executando comandos SQL que não possuem retorno............................................ 21
4.3.2. Executando comandos SQL que possuem retorno .................................................. 22
4.3.3. Executando Stored Procedures ............................................................................... 23
Acesso a Banco de Dados Utilizando VB.NET 2005

1. Como criar um Banco de Dados


A IDE do Visual Studio 2005, permite a criação de banco de dados, tabelas, views e stored
procedures.

Para se criar um arquivo de Banco de Dados no formato do SQL Server 2005 Express Edition (mdf)
deve-se seguir os seguintes passos:

1 – Primeiramente abrir o Server Explorer através do menu View → Server Explorer.

2 – A seguir clicar no botão “Connect to Database”, que ativará a tela de Adição de Conexões.

Para alterar o tipo de


Banco de Dados que
deseja criar ou conectar,
clique em Change...

Clique em Browse p/
escolher o caminho do
arquivo de Banco de
Dados que deseja criar
ou conectar.

A tela de adicionar conexões permite abrir um banco de dados existente, ou criar um novo
banco de dados. Para isso, informar o caminho onde criar o banco e o nome do banco a ser
criado.
3 – Feito isso, será criada uma conexão com o novo banco e a partir dele pode-se criar tabelas,
view, stored procedures, funções entre outras coisas. Para isso, é só clicar com o botão direito sobre
o item que deseja criar.
O exemplo abaixo mostra como criar uma tabela em um banco de dados.

Clicando com o botão direito


sobre a pasta Tables, será
aberto o menu que nos permite
adicionar novas tabelas.

4 – Uma vez adicionada uma nova tabela, basta informar as colunas, o tipo de dados e se o mesmo
pode ou não aceitar valores nulos.

Para criar uma Chave Primária,


selecionar a coluna desejada
com o botão direito e selecionar
a opção: Set Primary Key ou
selecionar a coluna e clicar no
botão de criação de PK da barra
de ferramentas.

Pode-se também criar


índices e relacionamentos
entre as tabelas.
5 – Para dar um nome a tabela criada, ou renomear uma tabela existente, ir até a janela de
propriedades - menu View → Properties Window e alterar a propriedade Name.

Para alterar o nome de uma


tabela deve-se alterar a
propriedade Name.

Ao salvar a tabela, se ainda não foi dado um nome para ela, será aberta uma tela para que se
informe o nome da mesma.

6 – Uma vez criada uma tabela pode-se alterar sua definição ou até mesmo visualizar, incluir,
alterar e excluir registros existentes. Para isso basta clicar com o botão direito sobre a tabela e
selecionar a opção “Open Table Definition” para alterar a definição da tabela ou na opção “Show
Table Data” para visualizar e editar os dados da tabela.
2. DataSet
O DataSet é um banco de dados relacional, cujos dados são armazenados apenas em memória.
Trabalha desconectado do banco de dados e tem como características:

• Não sabe a origem dos dados;


• Opcionalmente pode ser “tipado”;
• Pode ser ligada a DataControls, como DataGridView, por exemplo;
• Suporta atualização em lotes;
• Conecta-se aos dados físicos com as classes DataAdapter e TableAdapter;
• Um único DataSet pode conter dados de múltiplas fontes de dados.

2.1. Criando um DataSet

Para criar um DataSet clicar no menu Project → Add New Item... ou clicar com o botão direito
sobre o projeto na Solution Explorer e selecionar a opção New Item...

Selecione então a opção DataSet:


Será então criado um DataSet. No DataSet tem a opção de criar tabelas próprias, que existirão
apenas em memória, ou então selecionar uma tabela de uma conexão já existente do Server
Explorer, clicar e arrastar para dentro do DataSet.

Dessa forma será criado um esquema da tabela do Banco de Dados (físico) para o DataSet
(memória).

Após arrastar uma tabela para um DataSet, automaticamente, é criado um TableAdapter (no
exemplo CidadesTableAdapter) para este DataTable (Cidades).
O TableAdapter é o componente responsável pela interação dos dados de um DataSet (memória)
com o Banco de Dados (físico).

Quando um TableAdapter é criado, são criados comandos SQL de SELECT, INSERT, UPDATE
e DELETE. Como veremos adiante, esses comandos podem ser alterados e há possibilidade de
criar outras rotinas SQL conforme a necessidade da aplicação.

É possível também utilizar Stored Procedures num TableAdapter ao invés de comandos SQL.

Os métodos Fill e GetData, são criados juntamente com o TableAdapter e retornam o SELECT
padrão definido no TableAdapter. Este SELECT é uma seleção de dados simples que retornam
todos os campos de uma tabela sem restrições (clausula WHERE). A diferença entre os métodos
Fill e GetData é que o primeiro preenche um DataTable de um DataSet, por exemplo, o DataTable
Cidades do DataSet dsTreino mostrado anteriormente. Já o GetData simplesmente retorna o
resultado da seleção, sem preencher um DataTable.

Se uma base de dados tiver seu caminho alterado, ao tentar alterar um DataSet, ou ao executar
operações de banco de dados em tempo de execução será gerado um erro, já que os TableAdapters,
responsáveis pela comunicação entre o DataSet e o Banco de Dados, não conseguirão estabelecer
comunicação.

Para resolver este problema, basta corrigir o caminho da ConnectionString.

2.2. Corrigindo o caminho de uma String de Conexão

A string de conexão, normalmente é armazenada na opção Settings do My Project.

Duplo Clique
Será aberta então, a tela de configurações do projeto. A partir daí, basta clicar sobre a opção
Settings e corrigir o caminho gravado no campo Value como mostra a figura abaixo.

Selecionar a Clique aqui e informe o novo


opção Settings caminho do Banco de Dados
2.3. Criando SQLs e Stored Procedures num TableAdapter

Para criar uma query SQL ou uma Stored Procedure através de um TablaAdapter, basta clicar
sobre o TableAdapter com o botão direito e clicar sobre a opção Add Query.

Permite adicionar Permite alterar uma


novas Queries Query existente.

Será aberta então, uma janela onde escolhe-se o que deseja fazer: criar uma query SQL, criar uma
Stored Procedure ou utilizar uma Stored Procedure existente.

Se selecionar a primeira ou segunda opção (criação de SQL ou stored procedure), e clicar em Next,
aparecerá então, a tela a seguir, que nos permitirá escolher o tipo de procedimento que desejamos
criar.
Quando escolhida uma opção, ao clicar em Next é aberta a tela a seguir já contendo o esboço do
comando SQL selecionado.

O botão Query Builder abre um


editor visual de comandos SQL.

O botão Execute Query permite


testar a consulta SQL desenvolvida.
Uma vez criado o SQL, ao clicar em Next, será exibida uma tela questionando se deseja que sejam
criados os métodos de preencher um DataTable (método Fill) e o de retornar um DataTable
(método GetData).

Há possibilidade de alterar o nome do método que será criado. Supondo que será criado uma rotina
SQL que retorne um registro de uma tabela cujo código seja igual a um valor passado por
parâmetro, pode-se chamar os métodos de FillByCodigo e GetDataByCodigo.

Clicando novamente em Next aparecerá a mensagem que os métodos FillByCodigo e


GetDataByCodigo foram criados.

Após clicar em Finish o TableAdapter da Tabela “Cidades” ficará assim:

Nova Query que seleciona uma cidade pelo código


Da mesma forma é possível criar, ou associar Stored Procedures a um TableAdapter. Para associar
uma Stored Procedure, deve-se escolher a terceira opção da tela de escolha de tipo de comando:

Ao clicar em Next, será aberta a tela de seleção de Stored Procedure:

As procedures existentes
no Banco de Dados
aparecerão aqui. Selecione
a Procedure que desejar.

Aqui aparecerão os Aqui aparecerão os


parâmetros de entrada. campos de resultado.

Clicando em Next, aparecerá a tela onde informaremos o tipo de retorno da Stored Procedure.
Existem 3 tipos de retorno: o Tabular, que retorna dados em formato de tabela, um retorno de um
único valor ou uma procedure sem retorno.

Clicando novamente em Next, será possível informar o nome do método que iremos adicionar.

Por fim, clicando em Next, será exibida uma tela de informações sobre o método criado.
2.4. Criando uma Stored Procedure a partir do VS2005

Podemos criar uma Stored Procedure diretamente pelo TableAdapter ou então através do Server
Explorer.

Para isso basta clicar na conexão desejada, depois clicar com o botão direito na opção Stored
Procedures e depois disso clicar em Add New Stored Procedure no menu que será exibido.

Será aberta então uma janela para que possamos escrever nossa Stored Procedure. Ao clicar em
salvar, essa Stored Procedure será compilada. Se houver algum problema de sintaxe, será emitida
uma mensagem de aviso do erro. Caso contrário a Stored Procedure será criada.

Dica: Evite iniciar o nome de um Stored Procedure com o prefixo “sp_”, pois este é o prefixo
usado nas Stored Procedures do sistema.
3. Desenvolvendo aplicações de acesso a dados utilizando
TableAdapter e BindingSource
Verificar projeto NF_Completo, cadastro de Produtos.
http://docentes.anchieta.br/~ednilsonc/Ambiente%20de%20Programa%e7%e3o%20II/Projetos/

O BindingSource é um componente que tem como principal objetivo conectar componentes como
um DataGridView, TextBox ou ComboBox por exemplo, a um DataTable ou campo de um
DataTable.

Uma vez conectado este componente vai exibir o conteúdo que estiver presente no DataTable. O
BindingSource também gerencia alterações efetuadas num DataTable e, trabalhando em conjunto
com um TableAdapter permite adicionar, alterar e excluir registros de um banco de dados.

Para se conectar um BindingSource a um componente, podemos utilizar as propriedades


DataBindings do mesmo.

Existem duas formas de adicionarmos um BindingSource a um formulário:

Uma delas é de forma manual, adicionando ao projeto o Componente BindingSource através da


janela ToolBox:

Da segunda forma o BindingSource é criado automaticamente, após criarmos um link entre um


componente e um DataSet através da propriedade DataBindings.
A figura acima mostra um formulário com um TextBox selecionado - txtCodigo e a “Janela de
Propriedades” com a propriedade DataBindings – item Text do componente TextBox sendo
editada.

Da primeira vez que vamos conectar um componente de um formulário a um campo de um


DataTable, se ainda não existir um BindingSource para a tabela desejada, devemos expandir os
níveis como mostra a figura acima, até chegarmos na tabela correta e daí clicamos no campo em
que será efetuado o link com nosso componente.

Será incluído então ao formulário, os componentes TableAdapter, BindingSource e DataSet. Como


selecionamos um campo do DataTable “Produtos” do DataSet “dsCliente”, o VisualStudio cria o
componente com a nomenclatura exibida na figura abaixo:

Seguindo o exemplo acima, uma vez criado o objeto ProdutosBindingSource no formulário, para
conectar os demais componentes do formulário ao DataTable “Produtos”, não devemos mais
conectar utilizando a opção Other Data Sources e sim diretamente através do objeto
ProdutosBindingSource, caso contrário um novo BindingSource será criado e teremos problemas
na hora de atualizar o banco com o TableAdapter.

A figura a seguir mostra como efetuar um link entre um TextBox e um campo de um DataTable
utilizando um BindingSource:
3.1. Principais comandos de um BindingSource

• Antes de iniciar uma inclusão:

Me.ProdutosBindingSource.AddNew()

• Para gravar:
'Finaliza a edição do DataTable
Me.ProdutosBindingSource.EndEdit()
'Atualiza o Banco de dados com os dados do DataTalbe Produtos do
'DataSet DsCliente
Me.ProdutosTableAdapter.Update(DsCliente.Produtos)

• Para excluir:

'Remove a linha correte da tabela produtos do DataSet


Me.ProdutosBindingSource.RemoveCurrent()
'Aplica as alterações feitas no DataTable Produtos do DataSet
'DsCadastro ao Banco de Dados
Me.ProdutosTableAdapter.Update(DsCadastro.Produtos)

• Para cancelar um evento do BindingSource:


'Cancela a alteração ou adição feita no DataTable
Me.ProdutosBindingSource.CancelEdit()
4. Desenvolvendo aplicações de acesso a dados utilizando
TableAdapter
Para poder visualizar, editar e criar rotinas de comandos SQL ou Stored Procedure, inicialmente
devemos abrir o DataSet desejado, através de um duplo clique sobre o DataSet presente na janela
Solution Explorer.

4.1. Utilizando SQL

Verificar projeto Treino, FrmCidades:


http://docentes.anchieta.br/~ednilsonc/Ambiente%20de%20Programa%e7%e3o%20II/Projetos/

Podemos criar nossas próprias rotinas de SQL para Inclusão, Alteração e Exclusão ou então utilizar
as rotinas já presentes em nosso TableAdapter.

Podemos criar nossos próprios métodos de


INSERT, DELETE e UPDATE, como foi
abordado no item 2.3 deste tutorial.

Através das propriedades de um TableAdapter, podemos verificar os SQLs padrões


de INSERT, DELETE e UPDATE e alterá-los conforme nossa necessidade. Para
isso é necessário expandir o Command desejado (exemplo UpdateCommand),
clicar sobre a propriedade CommandText e posteriormente sobre o botão “...”.
Será aberta uma tela de edição de SQL como foi mostrado no item 2.3.
Exemplo de utilização do método INSERT de um TableAdapter :

Estrutura: <Nome do Projeto>.<Coleção de TableAdapters do DataSet ‘dstreino’>.<TableAdapter desejado>


Sub Incluir()
Dim taCidade As Treino.dsTreinoTableAdapters.CidadesTableAdapter

Try
taCidade = New Treino.dsTreinoTableAdapters.CidadesTableAdapter
taCidade.Insert(CInt(txtCodigo.Text), _
txtCidade.Text.Trim.ToUpper, _
cboEstado.SelectedItem.ToString)

MessageBox.Show("Cidade incluída com sucesso", "Inclusão", _


MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show("Erro ao Incluir!", "ERRO", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
taCidade = Nothing
End Try
End Sub

Exemplo da utilização do método UpdateCidades criado pelo usuário em um TableAdapter (ver


figura anterior):

Sub Alterar()
Dim taCidade As Treino.dsTreinoTableAdapters.CidadesTableAdapter

Try
'Instancia o objeto CidadesTableAdapter
taCidade = New Treino.dsTreinoTableAdapters.CidadesTableAdapter
'Chama o método UpdateCidades, criado no TableAdapter Cidades
taCidade.UpdateCidades(txtCidade.Text.Trim.ToUpper, _
cboEstado.SelectedItem.ToString, _
CInt(txtCodigo.Text))

MessageBox.Show("Cidade alterada com sucesso", "Alteração", _


MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show("Erro ao Gravar!", "ERRO", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
taCidade = Nothing
End Try
End Sub
4.2. Utilizando Stored Procedures

Verificar projeto Treino FrmProc:


http://docentes.anchieta.br/~ednilsonc/Ambiente%20de%20Programa%e7%e3o%20II/Projetos/

Um TableAdapter permite criar ou associar Stored Procedures de Seleção, Inclusão, Alteração e


Exclusão.

Para alterar os comandos padrões de um TableAdapter para que estes executem Stored Procedures,
basta alterar a propriedade CommandType para “StoredProcedure” e na propriedade
CommandText informar o nome da procedure.

Informar o nome da Stored Procedure

Alterar o tipo para StoredProcedure

É possível também associar Stored Procedures em um TableAdapter como foi mostrado no item
2.3 deste tutorial.

Os exemplos de utilização de métodos de um TableAdapter exibido no tópico anterior, também


valem aqui.
4.3. Desenvolvendo procedimentos de acesso a dados

Verificar projeto Treino FrmObjetos:


http://docentes.anchieta.br/~ednilsonc/Ambiente%20de%20Programa%e7%e3o%20II/Projetos/

4.3.1. Executando comandos SQL que não possuem retorno

Exemplo de código comentado:

Function ExecutaSQL(ByVal strSql As String) As Integer


Dim conn As SqlConnection 'Objeto responsável pela conexão
Dim cmd As SqlCommand 'Responsável por armazenar o SQL executado
Dim ret As Integer 'Variável de retorno

Try
'Cria a Conexão
conn = New SqlConnection(My.Settings.TreinoConnectionString)

'Inicializa o command
cmd = New SqlCommand(strSql, conn)

conn.Open() 'Abre a conexão com o banco de dados


ret = cmd.ExecuteNonQuery() 'Executa o sql
conn.Close() 'Fecha a conexão

Catch ex As Exception
Throw ex
Finally
cmd = Nothing
conn = Nothing
End Try
End Function
4.3.2. Executando comandos SQL que possuem retorno

Exemplo de código comentado:

Function Pesquisar(ByVal strSQL As String) As DataTable


Dim conn As SqlConnection 'Objeto responsável pela conexão
Dim cmd As SqlCommand 'Armazenar o comando SQL que será executado
Dim da As SqlDataAdapter 'Retorna dados do Bando de Dados
'Objeto tabela criada com o nome de 'Cidade'
Dim dt As DataTable = New DataTable("Cidade")
Try
'Cria a Conexão
conn = New SqlConnection(My.Settings.TreinoConnectionString)

'Inicializa o command
cmd = New SqlCommand(strSQL, conn)

'Abre a conexão com o banco de dados


conn.Open()
'Inicializa o data adapter que executará o SQL
da = New SqlDataAdapter(cmd)
'Preenche o Data Table dt com o resultado do SQL
da.Fill(dt)
'Fecha a conexão
conn.Close()

Return dt
Catch ex As Exception
MessageBox.Show(ex.Message, "Erro ao pesquisar", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
Return Nothing
Finally
dt = Nothing
cmd = Nothing
da = Nothing
conn = Nothing
End Try
End Function
4.3.3. Executando Stored Procedures

Exemplo de código que faz a chamada de uma Stored Procedure de exclusão:

Function Excluir(ByVal Codigo As Integer) As Integer


Dim conn As SqlConnection 'Objeto responsável pela conexão
Dim cmd As SqlCommand 'Armazenar a procedure que será executada
Dim param As SqlParameter 'Parâmetros da procedure

Try
'Cria a Conexão
conn = New SqlConnection(My.Settings.TreinoConnectionString)

'Inicializa o command
cmd = New SqlCommand("usp_de_Cidades", conn)
cmd.CommandType = CommandType.StoredProcedure

'Adiciona parâmetro Código da stored procedure


param = New SqlParameter("@Codigo", SqlDbType.Int)
param.Value = Codigo
cmd.Parameters.Add(param)

conn.Open() 'Abre a conexão com o banco de dados


cmd.ExecuteNonQuery() 'Executa o sql
conn.Close() 'Fecha a conexão

Catch ex As Exception
Throw ex
Finally
cmd = Nothing
conn = Nothing
End Try
End Function