Queria saber se da para exportar um banco de dados para usar em uma aplicação em qualquer computador. Por exemplo, eu crio um banco de dados para uma aplicação de lista telefonica, e eu queria saber se eu posso mover junto com a aplicação o banco de dados ao invés de só usar ele no meu computador. Se sim, como eu deveria conectar com o banco?
use um admin para criar o arquivo em seu projeto por exemplo o banco de dados pode ficar junto com seus arquivos de projeto na mesma pasta por exemplo chamado dados.s3db ou db a extensão você escolhe dependendo do admin que voce usar ele gera uma extensão LEBRA DO “ACCESS” e tipo iqual só que MELHOR executa sql normal etc etc etc…
alguns admins legais para windows:
com o seguinte trecho de código voce consegue criar e conectar um banco sqlite se ele nao existir !
classe: SQLite.java
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.swing.JOptionPane;publicclassSQLite{privatestaticConnectionconnection;privateStatementstatement;privateResultSetresultset;publicSQLite(){openDatabase();}publicstaticConnectiongetConnection(){returnconnection;}publicResultSetgetResultset(){returnresultset;}publicStatementgetStatement(){returnstatement;}publicStatementcreateStatement(){try{Statementstmt=connection.createStatement();returnstmt;}catch(SQLExceptionex){ex.printStackTrace();returnnull;}}privatevoidopenDatabase(){Stringdriver="org.sqlite.JDBC";Stringurl="jdbc:sqlite:meusdados.db";//criar o arquivo na pasta de projeto chamado : meusdados.dbStringuser="";Stringpass="";System.out.println("Conectando ao Banco de Dados...");//JOptionPane.showMessageDialog(null, "Conectando ao Banco de Dados");try{Class.forName(driver);connection=DriverManager.getConnection(url,user,pass);System.out.println("Conexão OK");statement=connection.createStatement();checkEstruturadeTabelas();}catch(ClassNotFoundExceptione){System.out.println("Falha de conexão faltando drivers.");e.printStackTrace();JOptionPane.showMessageDialog(null,e);System.exit(1);}catch(SQLExceptione){System.out.println("Falha de conexão ou na checagem das estruturas das Tabelas!");JOptionPane.showMessageDialog(null,e);System.exit(1);}}privatevoidcheckEstruturadeTabelas(){try{this.resultset=this.statement.executeQuery("select * from Tabela1;");// checar se tem tabelas e criar tableas automaticamente ou importar de um script.sql talves...this.resultset=this.statement.executeQuery("select * from Tabela2;");this.resultset=this.statement.executeQuery("select * from TabelaN;");System.out.println("Estruturas das Tabelas OK");}catch(SQLExceptione){System.out.println("Banco de Dados sem estruturas de tabelas...");System.out.println("Iniciando Assitente para configuração do Banco de Dados...");openAssitenteDialog();//chamar por exemplo interação com usuario para executar script sql manualmente !System.out.println("Aguardando interação com usuário...");//e.printStackTrace();}}//JDInstall dialog;privatevoidopenAssitenteDialog(){//dialog = new JDInstall(null, true);//dialog.setVisible(true);}/*private void openAssitenteDialogThread() { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { dialog = new JDInstall(null, true); dialog.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent e) { //System.exit(0); } }); dialog.setVisible(true); } }); }*/publicbooleanexecuteScript(Stringscript){System.out.println(script);try{createStatement().executeUpdate(script);//this.connection.commit();System.out.println("Criação de Estruturas das Tabelas OK");returntrue;}catch(SQLExceptione){/*try { //this.connection.rollback(); System.out.println("Erro ao executar script..."); System.out.println("Erro: " + e); } catch (SQLException ex) { System.out.println("Erro em rollback: " + ex); }*/JOptionPane.showMessageDialog(null,"ERRO:"+e.getErrorCode()+"\n"+e,"ERRO DE EXECUÇÃO",JOptionPane.ERROR_MESSAGE);e.printStackTrace();returnfalse;}}}
ve ai se te ajuda !
uso assim em meus projetos que nao precisa de um SGDB como mysql !!!
fica legal e portavel !,
ate mais ! duvidas e criticas são bem vindas flw.
R
RafaelCN
Me ajudou bastante, vou dar uma olhada mais profunda :D. E gostei do código
Uma outra dúvida, é o que você quer dizer com “admins”?! Administrador?
S
saulobt
Sim, são os programas de gerenciamento de base de dados. que usamos para executar as sql, ciar tabelas conectar no banco e gerenciá-lo de todas as maneiras visualmente!
R
RafaelCN
Entendi.
Obrigado!
R
raghy
alo, alo to dando uma olhada aqui e gostei. mas to vendo que o método não tem um main… vou tentar usar uma forma de chamar os métodos aqui, mas vc não tem algo funcionando mesmo 100 por cento, aí fica mais fácil de fazer o teste…
estava tentando com h2, procure aqui pelo guj.
e deixo meu site que tem uns programas , etc http://www.raghy.net23.net
pode comentar o que for preciso…
sobre o sqlite continuo tentando, aguardo main.
R
raghy
public static void main(String[] args) {
new SQLite();
}
fiz um main, mas não resultou nada aparente … ???
R
raghy
fiz um chuncho para testar. mas quando crio tabelas, da problema.
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packageSQLitetestes;importjava.sql.*;importjavax.swing.JOptionPane;publicclassTest{privateConnectionconexao;publicStatementstatement;publicResultSetresultset;publicPreparedStatementprep;publicTest(){// crio o bancoStringdriver="org.sqlite.JDBC";Stringurl="jdbc:sqlite:meusdados2.db";//criar o arquivo na pasta de projeto chamado : meusdados.db Stringuser="";Stringpass="";System.out.println("Conectando ao Banco de Dados...");//JOptionPane.showMessageDialog(null, "Conectando ao Banco de Dados"); try{Class.forName(driver);Connectionconnection=DriverManager.getConnection(url,user,pass);System.out.println("Conexão OK");statement=connection.createStatement();// checkEstruturadeTabelas(); }catch(ClassNotFoundExceptione){System.out.println("Falha de conexão faltando drivers.");e.printStackTrace();JOptionPane.showMessageDialog(null,e);System.exit(1);}catch(SQLExceptione){System.out.println("Falha de conexão ou na checagem das estruturas das Tabelas!");JOptionPane.showMessageDialog(null,e);System.exit(1);}/* CREATE TABLE `dados2` ( `nome` varchar(90) DEFAULT NULL, `endereco` varchar(150) DEFAULT NULL, `celular` varchar(90) DEFAULT NULL, `residencial` varchar(130) DEFAULT NULL, `email` varchar(130) DEFAULT NULL, `comentarios` varchar(130) DEFAULT NULL, `iddados` int(10) unsigned NOT NULL AUTO_INCREMENT, PRIMARY KEY (`iddados`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;*/try{Class.forName("org.sqlite.JDBC");conexao=DriverManager.getConnection("jdbc:sqlite:meusdados.db");statement=conexao.createStatement();// Class.forName("com.mysql.jdbc.Driver");//String url = "jdbc:mysql://localhost:3306/fundacaoesag";// String url = "jdbc:mysql://localhost:3306/bancoagenda";// Connection conexao = DriverManager.getConnection(url, "root", "");Statementcomando=conexao.createStatement();ResultSetresultado=comando.executeQuery("select * from dados");// ResultSet resultado2 = comando.executeQuery("select * from turmas");while(resultado.next()){// raghy.addElement(new String("nome do curso" + resultado.getString("nomeDoCurso")));System.out.println(resultado.getString("nome"));System.out.println(resultado.getString("email"));System.out.println(resultado.getString("celular"));JOptionPane.showMessageDialog(null,resultado.getString("nome"));JOptionPane.showMessageDialog(null,resultado.getString("email"));JOptionPane.showMessageDialog(null,resultado.getString("celular"));// jCturmas.addItem(resultado2.getString("nomeDaTurma"));}comando.close();conexao.close();}catch(ExceptionExcecao){System.out.println("Excecao sql"+Excecao.getMessage());}}//fecha construtpublicvoidconecta()throwsException{Class.forName("org.sqlite.JDBC");conexao=DriverManager.getConnection("jdbc:sqlite:meusdados.db");statement=conexao.createStatement();conexao.setAutoCommit(false);conexao.setAutoCommit(true);}publicvoidexec(Stringsql)throwsException{resultset=statement.executeQuery(sql);}publicvoiddesconecta(){booleanresult=true;try{conexao.close();JOptionPane.showMessageDialog(null,"banco fechado");}catch(SQLExceptionfecha){JOptionPane.showMessageDialog(null,"Não foi possivel "+"fechar o banco de dados: "+fecha);result=false;}}publicstaticvoidmain(String[]args){newTest();}}