Jump to content
progster

[Resolvido] Backup da BD de uma aplicação VB.NET

Recommended Posts

progster

Boa noite.

Surgiu-me uma duvida durante o desenvolvimento de uma aplicação, e gostaria de saber mais sobre a questão.

É o seguinte:

Depois de fazer / criar o installer de uma aplicação VB + BD ACCESS, ou até mesmo BD SQL, como é que se faz uma cópia de segurança da "mesma"?.

Desde já fico agradecido por qualquer esclarecimento que me possam prestar.

Cumprimentos.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
Super Oliks

Dim BBD As String = "Coloque um caminho" 'exemplo C:\BBD.....

System.IO.Directory.CreateDirectory(BBD) 'caso não exista

Acredito que isso deva resolver.

Share this post


Link to post
Share on other sites
progster

Pelo que percebi, na primeira linha coloca-se o caminho para onde se quer guardar a BD, enquanto que a segunda linha de código cria a pasta para onde é guardada a "mesma" certo?

Deste modo depois de criar o installer, e instalar a aplicação desenvolvida num PC já se poderá fazer o backup da mesma certo?


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
Super Oliks

Certo  :thumbsup:

...

Achei uma maneira "mais eficiente" de você fazer isso.

Dim BBD As String = "C:\BBD....."

If Not System.IO.Directory.Exists(BBD) Then
System.IO.Directory.CreateDirectory(BBD)
End If

Teste das duas formas, e depois diga qual é "melhor".  🤔

Share this post


Link to post
Share on other sites
progster

Já está a funcionar. Para a seguinte situação:

Dim BBD As String = "C:\BBD\"
If Not System.IO.Directory.Exists(BBD) Then
    System.IO.Directory.CreateDirectory(BBD)
End If
FileCopy("C:\bd1.mdb", "C:\BBD\Newbd1.mdb")

Ou seja, cria a pasta, e faz uma cópia da BD original.

Falta criar e testar o setup.exe da aplicação, num outro computador.

Assim que estiver testado dou um feedback.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
bioshock

Esse código está incorrecto no sentido em que o utilizador pode escolher o caminho do backup.

 Dim saveIt As New SaveFileDialog()
        With saveIt
            .Filter = "Access 2003 (*.mdb)|*.mdb"
            .FileName = "Backup" & "(" & Date.Today & ")" ' Aqui acrescentas o nome da base de dados
            ' e/ou Aplicação
            .InitialDirectory = "C:\"
            If .ShowDialog = Windows.Forms.DialogResult.OK Then
                IO.File.Copy(Application.StartupPath & "\BD.mdb", saveIt.FileName)
            End If
        End With

Share this post


Link to post
Share on other sites
progster

Não sei se percebi. Como é que o utilizador pode escolher o caminho?.

É que testei o código, e automáticamente sem interferência do utilizador criou a pasta "BBD" e copiou a BD. para essa mesma pasta.

 Dim saveIt As New SaveFileDialog()
        With saveIt
            .Filter = "Access 2003 (*.mdb)|*.mdb"
            .FileName = "Backup" & "(" & Date.Today & ")" ' Aqui acrescentas o nome da base de dados
            ' e/ou Aplicação
            .InitialDirectory = "C:\"
            If .ShowDialog = Windows.Forms.DialogResult.OK Then
                IO.File.Copy(Application.StartupPath & "\BD.mdb", saveIt.FileName)
            End If
        End With

Já testei este código, e pergunta ao utilizador para onde é que quer guardar uma cópia da BD, ora como certos utilizadores não são de confiar, não dá muito jeito, pois com o tempo poderiam criar várias backup's e depois ninguém se entendia.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
Super Oliks

Não sei se percebi. Como é que o utilizador pode escolher o caminho?

O utilizador não podes, pois o caminho ja está definido no código.

 Dim BBD As String = "C:\BBD\"

E no caso do arquivo de backup, toda vez que se for criar uma novo backup, esse backup substituiria o arquivo antigo.

 FileCopy("C:\bd1.mdb", "C:\BBD\Newbd1.mdb") 
'toda vez o arquivo salvo sera gravado nesta pasta, mantendo assim somente o arquivo mais recente

Share this post


Link to post
Share on other sites
big_dady

O problema de criar backups é ou crias backups todos os dias, ou mais vale tar quieto.

Se criares backups de Bd's todos os dias de forma automatica vai chegar o dia que nao tens espaço LOL ... e vai dar sempre erro :) e dps n tens nd.

O que podes fazer é forma manual. Arranjas um evento, associais uma copia e pronto.

O codigo disso encontras facilmente na net lol.

---

é isto que o SuperOliks disse.

tens que substituir sempre. e tens q verificar se tens espaço suficiente :) se nao perdes os dados todos se nao tivers la espaço.

FileCopy e chega.


Yours, Bid_dady

Share this post


Link to post
Share on other sites
progster

Até agora parece-me que o ideal é mesmo isto:

Dim BBD As String = "C:\BBD\"
If Not System.IO.Directory.Exists(BBD) Then
    System.IO.Directory.CreateDirectory(BBD)
End If
FileCopy("C:\bd1.mdb", "C:\BBD\Newbd1.mdb")

Coloquei no botão Sair, ou seja, sempre que sai da aplicação, cria a pasta da primeira vez e depois faz uma cópia da BD original.

Isto resolve a questão do espaço em disco, e faz o backup diariamente e de forma segura, há é claro a questão de FORMAR / DISCIPLINAR o(s) utilizador(es) da aplicação.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
Super Oliks

Sobre forma/disciplinar.... Basta colocar uma "msgbox" no botão sair, avisando ao utilizador que o backup foi feito e colocado no diretorio (C:\......)

Share this post


Link to post
Share on other sites
progster

Para a situação anterior, o assunto está resolvido, mas dentro da mesma linha de raciocinio:

Criei o Setup, mas não estou a conseguir que ao instalar a aplicação num outro computador, instale também a BD, ou seja, criei o Setup, e depois ao instalar num comp. B, instala só a aplicação e não a BD.

Resolvi, adicionar uma cópia da BD na pasta do setup, de modo a que antes de instalar a aplicação, coloco a BD no mesmo local onde a tinha no comp. A.

Será que existe alguma maneira de adicionar a BD no pacote de instalação?

P.S.: Testei a hipotese de ao criar a DataConnection com a BD, adicionar uma cópia ao projecto vb, mas o problema e isto ainda antes da criação do setup, é que ao correr o executavel e inserir dados, os "mesmos" só eram guardados no DataSet e não na BD.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
bioshock

Já testei este código, e pergunta ao utilizador para onde é que quer guardar uma cópia da BD, ora como certos utilizadores não são de confiar, não dá muito jeito, pois com o tempo poderiam criar várias backup's e depois ninguém se entendia.

Wtf?

Mas isso é problema teu? Não!

Esse problema é de quem utiliza a aplicação, não é de quem a desenvolve. :wallbash:

Share this post


Link to post
Share on other sites
progster

Wtf?

Mas isso é problema teu? Não!

Esse problema é de quem utiliza a aplicação, não é de quem a desenvolve. :wallbash:

Estás só a pensar na prespectiva do utilizador.  :wallbash:  :wallbash:

Em parte concordo com a tua opinião, mas também é problema "meu", pois na prespectiva do programador há que tentar identificar/prever possiveis futuros problemas, não só ao nível de software, mas também dos utilizadores, pois "estes" quando cometem erros queixam-se aos superiores  tentando descartar-se das responsabilidades, e depois quem as paga é o desgraçado do programador.

Isto passou-se na empresa onde estagiei.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
bioshock

Oh homem: da forma que estás a implementar eu também posso ir lá e copiar a base de dados para onde me apetece, vai dar ao mesmo, mas, e isto sim é importante na óptica do utilizador: com a tua solução gastas tempo ao utilizador :)

Mas faz como bem entenderes. :)

Share this post


Link to post
Share on other sites
Super Oliks
Será que existe alguma maneira de adicionar a BD no pacote de instalação?

É possível incorporar ficheiros dentro do nosso executável mas não sei até que ponto isso funciona com uma base de dados...

O melhor é pores a base de dados com password e tá.

Acho que essa é a maneira mais "sensata"  :)

e depois quem as paga é o desgraçado do programador.

Citação épica  :) :) ;)

Share this post


Link to post
Share on other sites
progster

Gastar tempo ao utilizador ???? :wallbash:

Oh homem. Crias a aplicação, e com aquele código por exemplo no botão Sair da aplicação, automaticamente é criado uma cópia da BD original para uma localização determinada previamente, como é que isto é gastar tempo ao utilizador ????????????????

Pela minha maneira de ver, o outro bloco de código, em que pede ao utilizador para onde é que quer guardar a BD, ai sim, ai é que é fazer perder tempo ao utilizador.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
progster

...

Citação épica  :) :) ;)

lol...

É uma realidade.  :)


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.