VB .NET - Backup e Restauração de um banco de dados Microsoft Access
Este artigo mostra como podemos fazer o backup e a restauração de um banco de dados Microsoft Access 2003, 2003, 2007, 2009, etc. É um exemplo básico para iniciantes e foi criado para ser simples e fácil de entender. Vou mostrar cada etapa básica necessária para construir uma aplicação Windows Forms usando a linguagem VB .NET na esperança de que tudo fique bem claro ao iniciante. |
Portanto se você é iniciante na linguagem VB .NET ou esta migrando de outra linguagem e quer aprender como fazer um backup e restauração de um banco de dados MS Access acompanhe cada etapa caso contrário siga para outro artigo.
Objetivos
Nosso objetivo será realizar o backup e a restauração de banco de dados MS Access.
Do que eu vou precisar ?
Você vai precisar de um ambiente onde a linguagem Visual Basic .NET possa ser desenvolvida e de um banco de dados.
Para começar uma boa notícia : as ferramentas que você vai precisar são todas grátis e você não vai gastar um centavo para aprender.
No link abaixo você poderá baixar o Visual Studio Express 2012 for Windows Desktop. Ele é grátis, totalmente funcional e não tem restrições. Após algum tempo de uso você será solicitado a efetuar um registro mas fique tranquilo é apenas para controle da Microsoft a ferramenta é realmente grátis.
Neste momento você também já pode usar as novas versões do Visual Studio 2013. Veja neste link: Microsoft Visual Studio Express 2013 for Windows Desktop
Criando o projeto no Visual Studio Express 2012 for Windows Desktop
Abra o Visual Studio 2012 Express for Windows Desktop e no menu FILE clique em New Project e selecione o template Windows Forms Application com o nome Backup_Restore;
Agora vamos definir no formulário form1.vb a interface para interação com o usuário.
Para isso abra a janela ToolBox e arraste e inclua os controles abaixo no formulário:
Disponha os controles conforme o leiaute abaixo:
Definindo o código do projeto
Vamos começar definindo o código do evento Click do botão de comando Procurar do GroupBox - Backup.
Veja abaixo o código deste botão:
Private Sub btnBancodeDados_Click(sender As Object, e As EventArgs) Handles btnBancodeDados.Click
Try
Dim dlg As New OpenFileDialog
dlg.Filter = "Microsoft Access Database(2002-2003) (*.mdb)|*.mdb|Microsoft Access Database(2007-2009) (*.accdb)|*.accdb"
' para definir a extensão *.mdb como padrão use FilterIndex = 1 , para extensão *.accdb use FilterIndex=2
dlg.InitialDirectory = My.Settings.PastaOrigem
dlg.FilterIndex = 1
If dlg.ShowDialog() = Windows.Forms.DialogResult.OK Then
txtBancoDeDados.Text = dlg.FileName
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
Neste código usamos o componente OpenFileDialog para abrir uma caixa de diálogo onde o usuário poderá selecionar o local e o banco de dados Microsoft Access para o qual deseja fazer o backup.
Definimos as propriedades Filter, InitialDirectory e FilterIndex do controle OpenFileDialog.
O caminho e nome do arquivo selecionado será exibido na caixa de texto txtBancoDeDados :
txtBancoDeDados.Text = dlg.FileName
O valor da propriedade InitialDirectory esta sendo obtida do arquivo de configuração - App.Config. Para isso vamos definir uma propriedade clicando com o botão direito do mouse sobre o nome do projeto e a seguir clicar em Properties.
Existem
duas maneiras de armazenar dados em um arquivo de configuração. Usando as
seções :
|
Na sequência selecione a opção Settings e defina a propriedade : PastaOrigem com o valor c:\dados conforme figura abaixo:
Isso irá se refletir no arquivo App.Config conforme podemos ver a seguir:
Como vemos foi criada a seção <userSettings> armazenando o nome da propriedade e seu valor.
Existe uma outra forma de armazenar valores no arquivo App.Config e depois obter esse valor na aplicação.
Vamos definir uma propriedade chamada PastaDestino com o valor c:\_dados na tag <appSettings> conforme a seguir:
Veremos mais adiante como recuperar o valor da propriedade PastaDestino.
A próxima tarefa será definir o código do evento Click do botão de comando Procurar onde o usuário irá definir a pasta de destino onde será feito o backup do banco de dados.
Abaixo vemos o código deste botão:
Private Sub btnDestino_Click(sender As Object, e As EventArgs) Handles btnDestino.Click
Try
Dim pasta As New FolderBrowserDialog
If pasta.ShowDialog() = Windows.Forms.DialogResult.OK Then
txtDestino.Text = pasta.SelectedPath
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
Usamos a classe FolderBrowseDialog que solicita ao usuário para selecionar uma pasta.
FolderBrowserDialog é uma caixa de diálogo modal; portanto, quando exibida, ela bloqueia o restante do aplicativo até que o usuário escolha uma pasta.
O valor selecionado pelo usuário será exibido na caixa de texto txtDestino :
txtDestino.Text = pasta.SelectedPath
O usuário deverá informar o nome do arquivo de backup na caixa de texto txtNomeBackup.
Para iniciar o Backup definimos o código a seguir no evento Click do botão de comando - Iniciar Backup :
Private Sub btnBackup_Click(sender As Object, e As EventArgs) Handles btnBackup.Click
Try
If txtBancoDeDados.Text = "" Then
MessageBox.Show("Selecione o banco de dados de Origem.")
btnBancodeDados.Focus()
Exit Sub
End If
If txtDestino.Text = "" Then
MessageBox.Show("Selecione o banco de dados de destino.")
btnDestino.Focus()
Exit Sub
End If
If txtNomeBackup.Text = "" Then
MessageBox.Show("Informe o nome do arquivo de Backup.")
txtNomeBackup.Focus()
Exit Sub
End If
Dim ext As String
ext = txtBancoDeDados.Text.Substring(txtBancoDeDados.Text.IndexOf(".") + 1)
File.Copy(txtBancoDeDados.Text, txtDestino.Text & "\" & txtNomeBackup.Text & "." & ext)
MessageBox.Show("Backup realizado com sucesso.", "BACKUP", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
Após verificar o caminho de origem, destino e o nome do backup extraímos a extensão do arquivo Access e usando o comando File.copy() da classe System.IO para realizar a cópia do arquivo para a pasta de destino:
ext = txtBancoDeDados.Text.Substring(txtBancoDeDados.Text.IndexOf(".")
+ 1)
File.Copy(txtBancoDeDados.Text,
txtDestino.Text & "\" & txtNomeBackup.Text & "." & ext)
O método Copy da classe File copia um arquivo existente para um novo arquivo. A sintaxe usada é a seguinte:
Public Shared Sub Copy ( sourceFileName As String, destFileName As String )
Definindo a Restauração do Backup
Vamos agora definir o código para realizar a restauração do Backup para banco de dados Microsoft Access.
No controle GroupBox - Restauração - vamos definir o código do evento Click do primeiro botão Procurar conforme abaixo:
Private Sub btnArquivoBackupRestaurar_Click(sender As Object, e As EventArgs) Handles btnArquivoBackupRestaurar.Click
Try
Dim dlg As New OpenFileDialog
dlg.Filter = "Microsoft Access Database(2002-2003) (*.mdb)|*.mdb|Microsoft Access Database(2007-2009) (*.accdb)|*.accdb"
' para definir a extensão *.mdb como padrão use FilterIndex = 1 , para extensão *.accdb use FilterIndex=2
Dim reader As New System.Configuration.AppSettingsReader
dlg.InitialDirectory = reader.GetValue("PastaDestino", GetType(String))
dlg.FilterIndex = 1
If dlg.ShowDialog() = Windows.Forms.DialogResult.OK Then
txtArquivoBackupRestaurar.Text = dlg.FileName
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
Neste código usamos a classe OpenFileDialog() que abre uma janela de diálogo que solicita que o usuário abra um arquivo.
Note que aqui estamos obtendo o valor da propriedade PastaDestino que será atribuída a propriedade InitialDirectory da classe OpenFileDialog():
Dim reader As New
System.Configuration.AppSettingsReader
dlg.InitialDirectory = reader.GetValue("PastaDestino", GetType(String))
Para que o código acima funcione você terá que incluir uma referência no projeto ao namespace System.Configuration. Para isso clique em PROJECT -> Add Reference, selecione a guia Assemblies e marque a opção conforme mostra a figura abaixo:
Concluída essa tarefa vamos agora definir o código do outro botão Procurar onde o usuário define a pasta para onde a restauração será feita.
Private Sub btnDestinoRestaurar_Click(sender As Object, e As EventArgs) Handles btnDestinoRestaurar.Click
Try
Dim pasta As New FolderBrowserDialog
If pasta.ShowDialog() = Windows.Forms.DialogResult.OK Then
txtDestinoRestaurar.Text = pasta.SelectedPath
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
Aqui usamos novamente a classe FolderBrowserDialog atribuindo o valor selecionado à caixa de texto txtDestinoRestaurar.
Para concluir no evento Click do botão de comando - Iniciar Restauração - definimos o código que restaura o arquivo selecionado para pasta de destino:
Private Sub btnRestaurar_Click(sender As Object, e As EventArgs) Handles btnRestaurar.Click
Try
Dim resultado As DialogResult = MessageBox.Show("Deseja Restaurar este Banco de dados ?", "Tem Certeza ?", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
Dim nomeArquivo As String
nomeArquivo = txtArquivoBackupRestaurar.Text.Substring(InStrRev(txtArquivoBackupRestaurar.Text, "\"))
If resultado = Windows.Forms.DialogResult.Yes Then
If File.Exists(txtDestinoRestaurar.Text & "\" & nomeArquivo) Then
Dim resultadoReplace As DialogResult = MessageBox.Show("Este arquivo já existe na pasta de destino. Deseja substituir este Banco de Dados ?", " Tem Certeza ?",
MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If resultadoReplace = Windows.Forms.DialogResult.Yes Then
File.Delete(txtDestinoRestaurar.Text & "\" & nomeArquivo)
File.Copy(txtArquivoBackupRestaurar.Text, txtDestinoRestaurar.Text & "\" & nomeArquivo)
MessageBox.Show("Restauração realizada com sucesso.", "RESTAURAÇÃO", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Else
File.Copy(txtArquivoBackupRestaurar.Text, txtDestinoRestaurar.Text & "\" & nomeArquivo)
MessageBox.Show("Restauração realizada com sucesso.", "RESTAURAÇÃO", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
Abaixo vemos a figura do projeto em execução:
Pegue o projeto completo aqui: Backup_Restore.zip
Heb 2:13 E outra vez: Porei nele a minha confiança. E ainda: Eis-me aqui, e os filhos que Deus me deu.
Heb 2:14 Portanto, visto como os filhos são participantes comuns de carne e sangue, também ele semelhantemente participou das mesmas coisas, para que pela morte derrotasse aquele que tinha o poder da morte, isto é, o Diabo;
Heb 2:15 e livrasse todos aqueles que, com medo da morte, estavam por toda a vida sujeitos à escravidão.
Heb 2:16 Pois, na verdade, não presta auxílio aos anjos, mas sim à descendência de Abraão.
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Veja os Destaques e novidades do SUPER DVD VB (sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Quer aprender C# ??
Chegou o
Super DVD C# com exclusivo material de
suporte e vídeo aulas com curso básico sobre C# |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#