none
Banco de Dados - Interop RRS feed

  • 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
    
    sexta-feira, 5 de junho de 2009 00:03

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.aspx

    Dica:
    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 Siga-me no Twitter!
    http://www.caioproiete.com
    domingo, 28 de junho de 2009 22:55
    Moderador
  • 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:

    Image Hosted by ImageShack.us


    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 Siga-me no Twitter!
    http://www.caioproiete.com
    quarta-feira, 8 de julho de 2009 00:22
    Moderador

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.aspx

    Dica:
    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 Siga-me no Twitter!
    http://www.caioproiete.com
    domingo, 28 de junho de 2009 22:55
    Moderador
  • 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
    terça-feira, 30 de junho de 2009 20:56
  • 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:

    Image Hosted by ImageShack.us


    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 Siga-me no Twitter!
    http://www.caioproiete.com
    quarta-feira, 8 de julho de 2009 00:22
    Moderador