VB.NET - Acessando e realizando operações com o MSDE


Neste artigo vou mostrar como podemos acessar um banco de dados MSDE e realizar algumas operações básicas. Portanto você vai precisar :

  1. Ter o MSDE instalado - MSDE - Instalação e migração de dados usando Access 2000

Nota: Para saber mais sobre o MSDE leia também os seguintes artigos :

Access ou SQL Server ? Entre a cruz e a espada ? Que tal o MSDE ?
MSDE - Criando tabelas com o Web Matrix
Migração Access -> SQL Server
Usando MSDE com o Visual Basic

Vamos acessar a tabela Clientes do Banco de dados Teste. Se você não possui o MSDE instalado siga as instruções do artigo citado acima para obter e instalar o MSDE.

Para criar o banco de dados e a tabela siga as instruções do artigo : MSDE - Criando tabelas com o Web Matrix

A estrutura da tabela Clientes deverá ser a seguinte:

Com o MSDE instalado , o banco de dados Teste criado e a tabela Clientes definida podemos abrir o Visual Studio Net e criar um novo projeto chamado - AcessoMSDE (ou algo parecido , fique a vontade).

No formulário principal - form1.vb- carregado inclua um componente DataGrid - dgMSDE -  e um botão de comando - btnAcessaMSDE.txt.

Declare o seguinte namespace no seu projeto:

Imports System.Data.SqlClient

A seguir vamos declarar as variáveis usadas no projeto no inicio do formulário:

Dim string_conexao As String = "integrated security=SSPI;data source=MACORATTI\VSDOTNET;persist security info=True;initial catalog=Teste"
Dim conexao_db As New SqlConnection(string_conexao)
Dim comando_sql As New SqlCommand

No evento Click do botão de comando insira o seguinte código :

    Private Sub btnAcessaMSDE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAcessaMSDE.Click
        Dim da As SqlDataAdapter
        ' Cria um objeto SqlDataAdapter
        da = New SqlDataAdapter("Select * from Clientes", string_conexao)
        ' Mapeia a tabela Clientes
        da.TableMappings.Add("Table", "Clientes")
        ' Preenche o dataset
        Dim ds = New DataSet
        Try
            da.Fill(ds)
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical)
        End Try

        ' Vincula o dataset ao datagrid
        dgMSDE.SetDataBinding(ds, "Clientes")
    End Sub

A string de conexão é chave para a conexão com o MSDE . Abaixo temos a string que é usada para o meu servidor MSDE.(Veja as propriedades do seu MSDE.)

"integrated security=SSPI;data source=MACORATTI\VSDOTNET;persist security info=True;initial catalog=Teste"

Data Source = MACORATTI\VSDOTNET - este é o nome do seu servidor MSDE

Initial Catalog = Teste - é o nome do banco de dados com o qual desejo me conectar

O resto do código creio que você já esta cansado de ver em meus artigos. Ele apenas preenche o dataset e vincula o resultado ao datagrid.

Realizando operações com o MSDE

Vamos agora partir para algo mais audacioso . Vamos acessar o MSDE e realizar a seguintes tarefas:

Crie um novo projeto no VS.NET e no formulário padrão vamos inserir os seguintes componentes, conforme figura abaixo:

3 Caixas de Texto :
  1. txtMSDE - MACORATTI\VSDOTNET (servidor MSDE)
  2. txtBdMSDE - Macoratti (Nome do banco de dados a ser criado)
  3. txtTabelaMSDE - Links (nome da tabela a ser criada)

Label - lblStatus - Exibe o status da operãção realizada

Um GroupBox - grpMSDE - agrupa os botões de comando.

4 botões de comando :

  1. btnConectaMSDE - conecta com MSDE
  2. btnCriaBdMSDE - cria e seleciona o banco de dados
  3. btnCriaTabelaMSDE - cria tabela no Banco de dados
  4. btnDropMSDE - exclui banco de dados criado.

Obs: Os nomes definidos nas caixas de texto são os usados no projeto do artigo mas você pode alterar a seu gosto.

formulário do projeto  

Em cada evento Click de cada botão de comando inclua o código conforme abaixo:

Conectar com MSDE:

  Private Sub btnConectaMSDE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConectaMSDE.Click
        ' Conectando como servidor MSDE
        lblStatus.Text = "Conectando com servidor MSDE..."
        Try
            conexao_db.Open()
            MsgBox("Conexao com servidor " & txtMSDE.Text & " realizada com sucesso.", MsgBoxStyle.Information)
            lblStatus.Refresh()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical)
        End Try
    End Sub

Cria e Seleciona o Banco de dados:

Private Sub btnCriaBdMSDE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCriaBdMSDE.Click
        ' cria um objeto sqlcommand
        comando_sql.Connection = conexao_db
        ' Cria o banco de dados Macoratti
        lblStatus.Text = "Criando o banco de dados"
        lblStatus.Refresh()
        comando_sql.CommandText = _
            "CREATE DATABASE Macoratti " & _
            "ON (" & _
            "  NAME = Macoratti_data, " & _
            "  FILENAME = 'C:\Temp\Macoratti.mdf'," & _
            "  SIZE = 2MB," & _
            "  MAXSIZE = 10MB," & _
            "  FILEGROWTH = 2MB)" & _
            "LOG ON(" & _
            "  NAME = MyDB_log," & _
            "  FILENAME = 'C:\Temp\Macoratti.ldf'," & _
            "  SIZE = 1MB," & _
            "  MAXSIZE = 5MB," & _
            "FILEGROWTH = 1MB)"
        Try
            ' Seleciona o banco de dados para uso
            comando_sql.ExecuteNonQuery()
            lblStatus.Text = "Selecionando o Banco de dados"
            lblStatus.Refresh()
            comando_sql.CommandText = "USE Macoratti"
            comando_sql.ExecuteNonQuery()
            MsgBox("Banco de dados " & txtBdMSDE.Text & " Criando e selecionado com sucesso.", MsgBoxStyle.Information)
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical)
        End Try
    End Sub

Cria tabela e insere registros :

    Private Sub btnCriaTabelaMSDE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCriaTabelaMSDE.Click

        ' Cria a tabela Links.
        lblStatus.Text = "Criando uma tabela no banco de dados."
        lblStatus.Refresh()

        comando_sql.CommandText = "CREATE TABLE Links (" & _
                                  "  Nome     VARCHAR(60)   PRIMARY KEY," & _
                                  "  URL      VARCHAR(60)   NOT NULL)"
        Try
            comando_sql.ExecuteNonQuery()
            ' Inseri um registro
            lblStatus.Text = "Inserindo registros..."
            lblStatus.Refresh()
            comando_sql.CommandText = "INSERT INTO Links VALUES (" & _
                                      "'Visual Basic , Visual Basic .NET , ASP e ASP.NET'," & _
                                      "'http://www.macoratti.net')"
            MsgBox("Tabela : " & txtTabelaMSDE.Text & " criada e registros inseridos com sucesso...", MsgBoxStyle.Information)
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical)
        End Try

    End Sub

Excluir Banco de dados:

Private Sub btnDropMSDE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDropMSDE.Click
        ' Exclui banco de dados 
        lblStatus.Text = "Excluindo o banco de dados : " & txtBdMSDE.Text
        lblStatus.Refresh()
        comando_sql.CommandText = "DROP DATABASE " & txtBdMSDE.Text
        Try
            comando_sql.ExecuteNonQuery()
            MsgBox("Banco de dados : " & txtBdMSDE.Text & " excluido com sucesso...", MsgBoxStyle.Information)
            lblStatus.Text = "Operação realizada com sucesso."
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical)
        Finally
            ' fecha a conexao
            conexao_db.Close()
        End Try
    End Sub

 

Após conectar ao MSDE , criar o banco de dados Macoratti e a tabela Links , você pode verificar se realmente tudo foi criado antes de 'dropar' o banco de dados . User o Server Explorer(talvez você vai ter que parar o serviço do MSDE) ou o Web Matrix para ver o banco de dados a tabela e os dados inseridos.

Abaixo o resultado para o exemplo: Visualizado através do Server Explorer e do Web Matrix.

Server Explorer Web Matrix

Lembre-se que ao usar um DataSet as modificações feitas são salvas somente no DataSet e não no banco de dados. para salvar as alterações você tem que criar um dataAdapter incluir um TableMapping e usar um CommandBuilder . Um exemplo básico de código que poderia fazer este serviço é mostrado a seguir:(Antes de fazer tudo isto é bom verificar se houve alterações no dataset.)

  If ds.HasChanges() Then
        Dim da As SqlDataAdapter
        Dim cmd_builder As SqlCommandBuilder
        ' Cria um dataadapter
        da = New SqlDataAdapter(SELECT_STRING, CONNECT_STRING)
        ' Mapeia a tabela 
        da.TableMappings.Add("Table", "Clientes")
        ' Faz o CommandBuilder gerar os comandos 
        ' insert, update, e delete.
        cmd_builder = New SqlCommandBuilder(data_adapter)
        ' Salva as alterações e atualiza o banco de dados
        da.Update(ds)
    End If

Conclusão:

Você pode acessar o MSDE usando o namespace SqlClient da mesma forma que acessa o SQL Server. As operações para criar um banco de dados , tabelas e inserir registros também são totalmente compatíveis com o SQL Server.

"Quem não tem SQL Server caça com MSDE."

Até o próximo artigo ...


José Carlos Macoratti