VB
.NET - Obtendo e atualizando dados de múltiplas tabelas
No artigo de hoje vamos mostrar como obter dados e atualizar mais de uma tabela usando um único objeto SqlCommad em uma aplicação Windows Forms usando a linguagem VB .NET.
Recursos usados:
Criando o projeto no Visual Studio
Abra o VS 2012 Express for desktop e clique em New Project;
Selecione a linguagem Visual Basic e o template Windows Forms Application; informe o nome MultiplasTabelas_SqlCommand e clique em OK;
![]() |
Nosso objetivo e retornar informações das tabelas Alunos e Cidades e um único objeto SqlCommand.
O banco de dados Cadastro foi gerado no SQL Server LocalDB e possui a seguinte string de conexão:
connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=Cadastro;Integrated Security=True"
Vamos armazenar esta informação no arquivo de configuração da aplicação Windows Forms que iremos criar.
Como a string de conexão esta sendo obtida a partir do arquivo de configuração App.Config vamos abrir este arquivo e incluir a informação da string de conexão do banco de dados Cadastro:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<connectionStrings>
<add name="conString"
connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=Cadastro;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
|
Para que possamos acessar essa informação temos que incluir uma referência no projeto a System.Configuration. No menu PROJECT clique em Add Reference e selecione o item System.Configuration conforme figura abaixo e clique em OK;
![]() |
Agora podemos concluir o código da classe AcessoDAL criando um método para retornar os dados das tabelas Alunos e Cidades conforme o código a seguir:
Imports System.Data.SqlClient
Imports System.Configuration
Public NotInheritable Class AcessoDAL
Private Sub New()
End Sub
Private Shared _sqlConnection As SqlConnection
Private Shared _conConnectionString As String
Public Shared Sub getConnection()
_conConnectionString = ConfigurationManager.ConnectionStrings("conexaoSQL").ConnectionString
Try
_sqlConnection = New SqlConnection(_conConnectionString)
_sqlConnection.Open()
Catch
Throw New Exception()
End Try
End Sub
Public Shared Sub CloseConnection()
Try
If _sqlConnection Is Nothing Then
_sqlConnection.Close()
End If
Catch
Throw New Exception()
End Try
End Sub
Public Shared Function getAtualizaDados(consultaSQL As String) As Integer
getConnection()
Try
Dim cmd As New SqlCommand()
cmd.CommandText = consultaSQL
cmd.CommandType = CommandType.Text
cmd.Connection = _sqlConnection
Return cmd.ExecuteNonQuery
Catch
Throw New Exception()
Finally
If _sqlConnection.State = ConnectionState.Open Then
CloseConnection()
End If
End Try
End Function
Public Shared Function getDadosDataSet(consulta As String) As DataSet
getConnection()
Try
Dim cmd As New SqlCommand()
cmd.CommandText = consulta
cmd.Connection = _sqlConnection
Dim adapter As New SqlDataAdapter()
adapter.SelectCommand = cmd
Dim ds As New DataSet()
adapter.Fill(ds)
Return ds
Catch
Throw New Exception()
Finally
If _sqlConnection.State = ConnectionState.Open Then
CloseConnection()
End If
End Try
End Function
End Class
|
O método getDadosDataSet() recebe uma string que representa o comando SQL que irá retornar os dados.
Basta agora definirmos a interface com o usuário usando o formulário form1.vb e incluindo no mesmo os seguintes controles:
Conforme o leiaute da figura abaixo:
![]() |
No evento Click do botão - Obter Dados das tabelas - inclua o código a seguir:
| Private Sub btnGetDados_Click(sender As Object, e As EventArgs) Handles btnGetDados.Click SelecionaDados() End Sub |
Estamos chamando a rotina SelecionaDados() cujo código mostramos a seguir:
| Private Sub SelecionaDados() Dim consultaSQL As String = "Select * from Alunos;Select * from Cidades" Dim ds As New DataSet ds = AcessoDAL.getDadosDataSet(consultaSQL) DataGridView1.DataSource = ds.Tables(0) DataGridView2.DataSource = ds.Tables(1) End Sub |
Observe que o comando SQL define duas consultas SELECT obtendo dados de duas tabelas distintas e usando o método getDadosDataSet() da classe AcessoDAL retornamos duas tabelas preenchidas que são exibidas no controle DataGridView conforme a seguir:
![]() |
Conforme esperado preenchemos cada DataGridView com informações de tabelas distintas obtidas em um único comando SQL.
Agora vamos incluir outro botão de comando no formulário form1.vb com o texto - Atualizar Dados - e nome btnAtualizaDados.
Vamos definir o código abaixo no evento Click deste botão:
| Private Sub btnAtualizaDados_Click(sender As Object, e As EventArgs) Handles btnAtualizaDados.Click Dim consultaSQL As String = "Update Alunos set Nome='XXXXXX' where Id=1;Update Cidades set CidadeNome='########' where CidadeId=1" Dim resultado As Integer resultado = AcessoDAL.getAtualizaDados(consultaSQL) SelecionaDados() End Sub |
Neste código estamos definindo duas consultas SQL para atualizar as tabelas Alunos e Cidades. No exemplo estou atualizando o campo Nome e CidadeNome com codigo igual a 1.
Executando o projeto e clicando no botão Atualizar Dados veremos o resultado a seguir:
![]() |
Observe os registros atualizados exibidos no controle DataGridView.
Pegue o projeto completo
aqui:
MultiplasTabelas_SqlCommand.zip
João 7:33
Disse, pois, Jesus: Ainda um pouco de tempo estou convosco, e depois vou para aquele que me enviou.João 7:34
Vós me buscareis, e não me achareis; e onde eu estou, vós não podeis vir.|
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#