Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

Banco de dados criado permanece após o aplicativo gerado?

Saudações, amigos!

Estou desenvolvendo uma aplicação Electron que usa banco de dados SQLite. Eu criei um arquivo .sqlite e o coloquei no diretório do projeto.

Minha dúvida é: Ao gerar o app executável, o banco dedados vai "inerente" ao aplicativo? Tenho que, de alguma forma, gerar o banco de dados em linha de código?

Desde já, agradeço a ajuda!

10 respostas

Fala ai Daniel, tudo bem? Nesse caso seria melhor sua aplicação estar desacoplada da API e banco.

Ou seja, você teria um projeto que seria apenas o Electron (app) e através de requisições AJAX ele iria se comunicar com uma API para buscar e enviar informações (que serão consumidas e salvas em um banco de dados).

Espero ter ajudado.

Fala Mathues, muito obrigado pela ajuda!

Para ser bem sincero eu não entendi muito bem o que você quis passar kk Creio que por eu não saber o que é AJAX.

Mas vou reformular a pergunta: Para eu gerar o app Electron, eu vou ter que inserir linhas de código para gerar o banco de dados após o app ser instalado nos outros PC's, certo? Ou ao gerar o app executável ele já vai com o banco de dados?

Fala ai Daniel, vamos lá:

Para eu gerar o app Electron, eu vou ter que inserir linhas de código para gerar o banco de dados após o app ser instalado nos outros PC's, certo?

Não, o app deve conger apenas o código para funcionamento do app e não o banco de dados.

Ou ao gerar o app executável ele já vai com o banco de dados?

O que eu quis dizer é que você vai gerar apenas o pacote e build do aplicativo, o banco de dados não vai estar contido nele, vai ser consumido via requisições HTTP (AJAX) de uma API.

Ou seja, quando a gente abre o Facebook por exemplo, é disparada uma requisição para os servidores do Facebook que bate em um banco de dados e retorna a lista de posts dos nossos amigos (de maneira simplista).

A ideia é a mesma, você precisa fazer seu aplicativo Electron se comunicar com alguma API (back-end/servidor) para recuperar e atualizar informações em algum banco de dados.

Espero ter ajudado.

Ah certo, entendi! Obrigado novamente pela ajuda, Matheus!!

Acontece que eu não vou me comunicar com a internet, minha aplicação tem que ser 100% offline, por isso a dúvida! kk

Nas minhas pesquisas eu encontrei algo como "if(existis!) create Database", então eu acredito que o caminho seja por aí.

Mas muito obrigado pela ajuda :)

Magina Daniel, mesmo ela sendo 100% ainda é muito estranho você ja servila com o banco embutido.

Nesse caso acho que vale você utilizar o IndexedDB do navegador ao invés do sqlite.

Abraços e bons estudos.

Beleza, valeu Matheus pela ajuda e dica! Vou dar uma olhada!

Fala pessoal, vou colocar um complemento. "inserir linhas de código para gerar o banco de dados após o app ser instalado nos outros PC's, certo? Ou ao gerar o app executável ele já vai com o banco de dados?"

Um dúvida sobre "outros PC´s": Você esta falando de aplicativos em "clientes" diferentes ou para ser utilizado em REDE? O ideal é você criar um projeto de configuração onde você passe a linha de conexão, sendo assim você configura terminal por terminal onde esta o servidor e todos visualizarão os mesmos dados, desta forma você pode colocar seu banco em qualquer lugar, inclusive na web, embora seja uma "gambiarra".

Você vai ter que gerar na mão da mesma forma que colocou ai, a menos que use algum ORM(Entity, por exemplo).

Vai validar se o arquivo existe com If, como você mencionou e utilizar

    SqlCeEngine engine = new SqlCeEngine("stringDeConexão"); 
    engine.CreateDatabase();

    SqlCeCommand cmd = conn.CreateCommand();
    cmd.CommandText = "CREATE TABLE lalalalala";
    cmd.ExecuteNonQuery();

Lembrando que você vai ter que criar todas as tabelas.

Fala, Carlos!

Sobre sua dúvida: É um app para ser usado em "clientes" diferentes. Ou seja, algumas pessoas com seus respectivos computadores.

Não preciso compartilhar o banco de dados entre os computadores, na verdade cada um tem que ter seus próprios dados (pois o app tem uma função específica).

Obrigado por citar "ORM", vou pesquisar mais sobre.

solução!

Fala pessoal, com mais estudos eu estou convergindo numa solução.

Basicamente, eu instalei o módulo do Sqlite3 nos módulos NPM e crio o banco de dados via código.

Sempre que ele for rodado em um PC diferente, ele primeiro checa com o "IF NOT EXISTS" e se for o caso, cria as tabelas novamente.

Obrigado pela ajuda!

Boa Daniel, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.