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() 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