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#