Usuário com melhor resposta
Banco de Dados - Interop

Pergunta
-
Estou criando banco de dados access utilizando o próprio componente Access, conforme código abaixo
Existe alguma outra forma de se criar um banco de dados em utilizar o Interop?
Dim objAccess As New Microsoft.Office.Interop.Access.Application Try objAccess.Visible = True objAccess.NewCurrentDatabase(sDB) objAccess.CloseCurrentDatabase() objAccess.Application.Quit() objAccess = Nothing Catch ex As Exception _Erro = "Erro na criação do Banco de dados" & vbCrLf & ex.ToString Return False End Try
Respostas
-
Olá Venildo,
Sem utilizar nenhum tipo de Interop não é possível, a menos que você conheça o formato binário dos arquivos do Access.
Existe uma alternativa utilizando o ADOX, que também usa Interop, mas você não estaria abrindo o Access diretamente... Tudo é feito através do provider Jet OleDB.
O artigo abaixo mostra passo-a-passo como funciona:
Create an Access Database in C#
http://blog.jrpsoftware.com/PermaLink,guid,edf0af2e-838a-4781-9543-13b22dee0ae9.aspxDica:
Uma outra alternativa que muita gente usa (até mais simples), é você criar um banco de dados vazio no Access, e ter esse MDB vazio junto com a sua aplicação. Quando sua aplicação quiser "criar" um novo banco de dados vazio, basta fazer uma cópia desse MDB que está junto com a sua aplicação... Simples assim.
Aliás, você poderia até incorporar esse MDB vazio no seu executável (Resources) e quando precisasse, bastaria obter esse MDB da lista de resources e escrever em algum lugar do disco, criando um banco de dados novinho em folha ;).
Abraços,
Caio Proiete
Caio Proiete
http://www.caioproiete.com- Sugerido como Resposta C. Augusto Proiete [MVP]Moderator terça-feira, 30 de junho de 2009 00:07
- Marcado como Resposta C. Augusto Proiete [MVP]Moderator quarta-feira, 4 de novembro de 2009 02:24
-
Olá Venildo,
É bastante simples... O primeiro passo é adicionar o MDB nos Resources do seu projeto.
Primeiro, para facilitar, mude a extensão do seu arquivo MDB para uma extensão diferente, como por exemplo ".bin", apenas para o Visual Studio interpretar esse arquivo como um arquivo binário, e não como um banco de dados tradicional.
Depois, vá nas propriedades do seu projeto (botão direito no Solution Explorer -> Properties), e selecione o item Resources. Altere o tipo de resource para Files, e em seguida selecione "Add Existing File..." no menu Add Resource. Veja a figura abaixo para referência:
Depois de adicionar o arquivo na sua lista de Resources, você já tem uma referência para esse resource disponível no My.Resources.NomeDoSeuResource., que corresponde a um array de bytes com o conteúdo do arquivo. Assim, tudo o que você precisa fazer quando quiser criar um novo banco de dados, é escrever esse conteúdo que está nesse byte[] para um arquivo em disco... Algo como:Ç
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Copia todo o conteúdo do arquivo MDB que está nos Resources, para um arquivo em disco File.WriteAllBytes("C:\NovoBancoDeDados.mdb", My.Resources.MeuBancoDeDados) End Sub
Vale lembrar que a classe File está no namespace System.IO, por isso, não esqueça de adicionar esse namespace na sua lista de Imports.
Abraços,
Caio Proiete
Caio Proiete
http://www.caioproiete.com- Sugerido como Resposta Ari C. RaimundoModerator quarta-feira, 8 de julho de 2009 15:56
- Marcado como Resposta C. Augusto Proiete [MVP]Moderator quarta-feira, 4 de novembro de 2009 02:24
Todas as Respostas
-
Olá Venildo,
Sem utilizar nenhum tipo de Interop não é possível, a menos que você conheça o formato binário dos arquivos do Access.
Existe uma alternativa utilizando o ADOX, que também usa Interop, mas você não estaria abrindo o Access diretamente... Tudo é feito através do provider Jet OleDB.
O artigo abaixo mostra passo-a-passo como funciona:
Create an Access Database in C#
http://blog.jrpsoftware.com/PermaLink,guid,edf0af2e-838a-4781-9543-13b22dee0ae9.aspxDica:
Uma outra alternativa que muita gente usa (até mais simples), é você criar um banco de dados vazio no Access, e ter esse MDB vazio junto com a sua aplicação. Quando sua aplicação quiser "criar" um novo banco de dados vazio, basta fazer uma cópia desse MDB que está junto com a sua aplicação... Simples assim.
Aliás, você poderia até incorporar esse MDB vazio no seu executável (Resources) e quando precisasse, bastaria obter esse MDB da lista de resources e escrever em algum lugar do disco, criando um banco de dados novinho em folha ;).
Abraços,
Caio Proiete
Caio Proiete
http://www.caioproiete.com- Sugerido como Resposta C. Augusto Proiete [MVP]Moderator terça-feira, 30 de junho de 2009 00:07
- Marcado como Resposta C. Augusto Proiete [MVP]Moderator quarta-feira, 4 de novembro de 2009 02:24
-
Caio, boa noite
Em relação a sua alternativa já tinha pensando nisso, porém tem um problema muito sério, é que crio vários bancos de dados diferentes, o processo é complexo.
No entanto vc valou em anexar o banco de dados ao Resources e depois restaurar, uma tentei usar isso com imagem e não tive sorte (nao verdade conhecimento), não consegui usar.
Você teria algum link ou mesmo poderia me informar como que faço para usar os Resources. Por exemplo coloquei o banco de dados dentro do resource, como que faço para usar esse resources, transforma ele em arquivo e usar.
Obrigado -
Olá Venildo,
É bastante simples... O primeiro passo é adicionar o MDB nos Resources do seu projeto.
Primeiro, para facilitar, mude a extensão do seu arquivo MDB para uma extensão diferente, como por exemplo ".bin", apenas para o Visual Studio interpretar esse arquivo como um arquivo binário, e não como um banco de dados tradicional.
Depois, vá nas propriedades do seu projeto (botão direito no Solution Explorer -> Properties), e selecione o item Resources. Altere o tipo de resource para Files, e em seguida selecione "Add Existing File..." no menu Add Resource. Veja a figura abaixo para referência:
Depois de adicionar o arquivo na sua lista de Resources, você já tem uma referência para esse resource disponível no My.Resources.NomeDoSeuResource., que corresponde a um array de bytes com o conteúdo do arquivo. Assim, tudo o que você precisa fazer quando quiser criar um novo banco de dados, é escrever esse conteúdo que está nesse byte[] para um arquivo em disco... Algo como:Ç
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Copia todo o conteúdo do arquivo MDB que está nos Resources, para um arquivo em disco File.WriteAllBytes("C:\NovoBancoDeDados.mdb", My.Resources.MeuBancoDeDados) End Sub
Vale lembrar que a classe File está no namespace System.IO, por isso, não esqueça de adicionar esse namespace na sua lista de Imports.
Abraços,
Caio Proiete
Caio Proiete
http://www.caioproiete.com- Sugerido como Resposta Ari C. RaimundoModerator quarta-feira, 8 de julho de 2009 15:56
- Marcado como Resposta C. Augusto Proiete [MVP]Moderator quarta-feira, 4 de novembro de 2009 02:24