 VB.NET - 
Acessando e realizando operações com o MSDE
 
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 :
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 ?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:
Criar um banco de dados
Criar uma tabela
Inserir Registros
Apagar o banco de dados criado
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 : 
 Label - lblStatus - Exibe o status da operãção realizada Um GroupBox - grpMSDE - agrupa os botões de comando. 4 botões de comando : 
 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()
			            ' 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