|
Página 1 de 1
|
[ 21 Mensagens ] |
|
[RESOLVIDO] SQLite Expert Personal
| Autor |
Mensagem |
|
Cah Vitale
What is AVD?
Data de registro: 01 Nov 2012, 19:09 Mensagens: 14
|
 [RESOLVIDO] SQLite Expert Personal
Criei um banco de dados usando o SQLite Expert Personal. Os testes no emulador funcionaram perfeitamente, consegui acessar minhas tabelas e mostrar as informações. Porém ao fazer as alterações para poder acessar o banco de um celular real seguindo o link http://www.reigndesign.com/blog/using-y ... lications/, quando eu tento mostrar as informações da minha tabela no listview, da erro "NullPointerException". Algum já conseguiu acessar as tabelas do banco acessando dessa maneira?
Editado pela última vez por Cah Vitale em 04 Nov 2012, 21:34, num total de 1 vezes
|
| 01 Nov 2012, 19:30 |
|
 |
|
A H Gusukuma
Dalvik Virtual Machine
Data de registro: 17 Jul 2011, 10:55 Mensagens: 1997 Localização: São Paulo
|
 Re: SQLite Expert Personal
Olá Posta o código e o LogCat
_________________Abraços ___________ Novo App: CalcMat - Calculadora de materiais para concreto Blog: Agorandroid - sobre programação Android Twitter: @Agorandroid ___________ Campanha: Facilite sua vida e a dos outros usuários Netiqueta:Procure responder as sugestões. Quando encontrar a solução, coloque [Resolvido] no primeiro post o mais rápido possível. Lembre-se de agradecer às pessoas que ajudaram e poste a solução do problema.
|
| 01 Nov 2012, 20:03 |
|
 |
|
Cah Vitale
What is AVD?
Data de registro: 01 Nov 2012, 19:09 Mensagens: 14
|
 Re: SQLite Expert Personal
Bom, para poder acessar o banco pela pasta assets, eu usei o código do link http://www.reigndesign.com/blog/using-y ... mment-2046, daí como eu já tinha acessado meu banco e minhas tabelas pelo emulador, eu coloquei a classe que eu já tinha criado junto com a classe desse link e ficou assim:public class DataBaseHelper extends SQLiteOpenHelper { //The Android's default system path of your application database. private static String DB_PATH = "/data/data/guia.virtual.android/databases/"; private static String DB_NAME = "bd_guia"; //Nome das tabelas private static final String NOME_TABELA1 = "estabelecimento"; private static final String NOME_TABELA2 = "atracao"; private SQLiteDatabase db; private final Context myContext; /** * Constructor * Takes and keeps a reference of the passed context in order to access to the application assets and resources. * @param context */ public DataBaseHelper (Context context ) { super(context, DB_NAME, null, 1); this. myContext = context; } /** * Creates a empty database on the system and rewrites it with your own database. * */ public void createDataBase () throws IOException{ boolean dbExist = checkDataBase (); if(dbExist ){ //Não faz nada, o banco já existe }else{ //By calling this method and empty database will be created into the default system path //of your application so we are gonna be able to overwrite that database with our database. db = this. getReadableDatabase(); //close(); try { copyDataBase (); } catch (IOException e ) { throw new Error("Error copying database"); } } } /** * Check if the database already exist to avoid re-copying the file each time you open the application. * @return true if it exists, false if it doesn't */ private boolean checkDataBase (){ SQLiteDatabase checkDB = null; try{ String myPath = DB_PATH + DB_NAME; checkDB = SQLiteDatabase. openDatabase(myPath, null, SQLiteDatabase. OPEN_READONLY); }catch(SQLiteException e ){ //database does't exist yet. } if(checkDB != null){ checkDB. close(); } return checkDB != null ? true : false; } /** * Copies your database from your local assets-folder to the just created empty database in the * system folder, from where it can be accessed and handled. * This is done by transfering bytestream. * */ private void copyDataBase () throws IOException{ //Open your local db as the input stream InputStream myInput = myContext. getAssets(). open(DB_NAME ); // Path to the just created empty db String outFileName = DB_PATH + DB_NAME; //Open the empty db as the output stream OutputStream myOutput = new FileOutputStream(outFileName ); //transfer bytes from the inputfile to the outputfile byte[] buffer = new byte[1024]; int length; while ((length = myInput. read(buffer ))> 0){ myOutput. write(buffer, 0, length ); } //Close the streams myOutput. flush(); myOutput. close(); myInput. close(); } public void openDataBase () throws SQLException{ //Open the database String myPath = DB_PATH + DB_NAME; db = SQLiteDatabase. openDatabase(myPath, null, SQLiteDatabase. OPEN_READONLY); } @Override public void onCreate (SQLiteDatabase db ) { } @Override public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion ) { } /*********************** * * CLASSE COM OS MÉTODOS ONDE EU ACESSAVA MINHAS TABELAS E MOSTRAVA AS INFORMAÇÕES NO LISTVIEW */ //Salva o estabelecimento, insere um novo ou atualiza public long salvar (TBEstabelecimento tbestabelecimento ) { long id = tbestabelecimento. id; if (id != 0) { atualizar (tbestabelecimento ); } else { // Insere novo id = inserir (tbestabelecimento ); } return id; } // Salva a obra, insere uma nova ou atualiza public long salvarObra (Atracao obra ) { long id = obra. id; if (id != 0) { atualizarObra (obra ); } else { // Insere nova id = inserirObra (obra ); } return id; } // Insere um novo estabelecimento public long inserir (TBEstabelecimento tbestabelecimento ) { ContentValues values = new ContentValues (); values. put(TBEstabelecimentos. NOME, tbestabelecimento. nome); values. put(TBEstabelecimentos. DESCRICAO, tbestabelecimento. descricao); values. put(TBEstabelecimentos. ENDERECO, tbestabelecimento. endereco); values. put(TBEstabelecimentos. TELEFONE, tbestabelecimento. telefone); values. put(TBEstabelecimentos. HORARIO, tbestabelecimento. horario); values. put(TBEstabelecimentos. FONTE, tbestabelecimento. fonte); //values.put(Estabelecimentos.FOTO, estabelecimento.foto); long id = inserir (values ); return id; } // Insere um novo estabelecimento public long inserir (ContentValues valores ) { long id = db. insert(NOME_TABELA1, "", valores ); return id; } // Insere uma nova obra public long inserirObra (Atracao atracao ) { ContentValues values = new ContentValues (); values. put(Atracoes. NOME, atracao. nome); values. put(Atracoes. DESCRICAO, atracao. descricao); long id = inserirObra (values ); return id; } // Insere uma nova obra public long inserirObra (ContentValues valores ) { long id = db. insert(NOME_TABELA2, "", valores ); return id; } // Atualiza o estabelecimento no banco. O id do estabelecimento é utilizado. public int atualizar (TBEstabelecimento tbestabelecimento ) { ContentValues values = new ContentValues (); values. put(TBEstabelecimentos. NOME, tbestabelecimento. nome); values. put(TBEstabelecimentos. DESCRICAO, tbestabelecimento. descricao); values. put(TBEstabelecimentos. ENDERECO, tbestabelecimento. endereco); values. put(TBEstabelecimentos. TELEFONE, tbestabelecimento. telefone); values. put(TBEstabelecimentos. HORARIO, tbestabelecimento. horario); values. put(TBEstabelecimentos. FONTE, tbestabelecimento. fonte); //values.put(Estabelecimentos.FOTO, estabelecimento.foto); String _id = String. valueOf(tbestabelecimento. id); String where = TBEstabelecimentos._ID + "=?"; String[] whereArgs = new String[] { _id }; int count = atualizar (values, where, whereArgs ); return count; } // Atualiza o estabelecimento com os valores abaixo // A cláusula where é utilizada para identificar o estabelecimento a ser atualizado public int atualizar (ContentValues valores, String where, String[] whereArgs ) { int count = db. update(NOME_TABELA1, valores, where, whereArgs ); return count; } // Atualiza a obra no banco. O id da obra é utilizado. public int atualizarObra (Atracao obra ) { ContentValues values = new ContentValues (); values. put(Atracoes. NOME, obra. nome); values. put(Atracoes. DESCRICAO, obra. descricao); String _id = String. valueOf(obra. id); String where = Atracoes._ID + "=?"; String[] whereArgs = new String[] { _id }; int count = atualizarObra (values, where, whereArgs ); return count; } // Atualiza a obra com os valores abaixo // A cláusula where é utilizada para identificar a obra a ser atualizado public int atualizarObra (ContentValues valores, String where, String[] whereArgs ) { int count = db. update(NOME_TABELA2, valores, where, whereArgs ); return count; } // Deleta o estabelecimento com o id fornecido public int deletar (long id ) { String where = TBEstabelecimentos._ID + "=?"; String _id = String. valueOf(id ); String[] whereArgs = new String[] { _id }; int count = deletar (where, whereArgs ); return count; } // Deleta o estabelecimento com os argumentos fornecidos public int deletar (String where, String[] whereArgs ) { int count = db. delete(NOME_TABELA1, where, whereArgs ); return count; } // Deleta a obra com o id fornecido public int deletarObra (long id ) { String where = Atracoes._ID + "=?"; String _id = String. valueOf(id ); String[] whereArgs = new String[] { _id }; int count = deletarObra (where, whereArgs ); return count; } // Deleta a obra com os argumentos fornecidos public int deletarObra (String where, String[] whereArgs ) { int count = db. delete(NOME_TABELA2, where, whereArgs ); return count; } // Busca o estabelecimento pelo id public TBEstabelecimento buscarEstabelecimento (long id ) { // select * from estabelecimento where _id=? Cursor c = db. query(true, NOME_TABELA1, TBEstabelecimento. colunas, TBEstabelecimentos._ID + "=" + id, null, null, null, null, null); if (c. getCount() > 0) { // Posicinoa no primeiro elemento do cursor c. moveToFirst(); TBEstabelecimento tbestabelecimento = new TBEstabelecimento (); // Lê os dados tbestabelecimento. id = c. getLong(0); tbestabelecimento. nome = c. getString(1); tbestabelecimento. descricao = c. getString(2); tbestabelecimento. endereco = c. getString(3); tbestabelecimento. telefone = c. getString(4); tbestabelecimento. horario = c. getString(5); tbestabelecimento. fonte = c. getString(6); //Blob foto = c.getBlob(7); return tbestabelecimento; } c. close(); return null; } // Busca a obra pelo id public Atracao buscarObra (long id ) { // select * from estabelecimento where _id=? Cursor c = db. query(true, NOME_TABELA2, Atracao. colunas, Atracoes._ID + "=" + id, null, null, null, null, null); if (c. getCount() > 0) { // Posicinoa no primeiro elemento do cursor c. moveToFirst(); Atracao obra = new Atracao (); // Lê os dados obra. id = c. getLong(0); obra. nome = c. getString(1); obra. descricao = c. getString(2); //estabelecimento.foto = c.getString(7); return obra; } c. close(); return null; } // Retorna um cursor com todos os estabelecimentos public Cursor getCursor () { try { // select * from estabelecimento return db. query(NOME_TABELA1, TBEstabelecimento. colunas, null, null, null, null, null, null); } catch (SQLException e ) { return null; } } // Retorna um cursor com todos as obras public Cursor getCursorObra () { try { // select * from estabelecimento return db. query(NOME_TABELA2, Atracao. colunas, null, null, null, null, null, null); } catch (SQLException e ) { Log. e("ERRO!!!!!!", e. getMessage()); return null; } } // Retorna uma lista com todos os estabelecimentos public List<TBEstabelecimento> listarEstabelecimentos () { Cursor c = getCursor (); List<TBEstabelecimento> tbestabelecimentos = new ArrayList<TBEstabelecimento> (); if (c. moveToFirst()) { // Recupera os índices das colunas int idxId = c. getColumnIndex(TBEstabelecimentos._ID ); int idxNome = c. getColumnIndex(TBEstabelecimentos. NOME); int idxDescricao = c. getColumnIndex(TBEstabelecimentos. DESCRICAO); int idxEndereco = c. getColumnIndex(TBEstabelecimentos. ENDERECO); int idxTelefone = c. getColumnIndex(TBEstabelecimentos. TELEFONE); int idxHorario = c. getColumnIndex(TBEstabelecimentos. HORARIO); int idxFonte = c. getColumnIndex(TBEstabelecimentos. FONTE); //Blob idxFoto = c.getBlob(Estabelecimentos.FOTO); // Loop até o final do { TBEstabelecimento tbestabelecimento = new TBEstabelecimento (); tbestabelecimentos. add(tbestabelecimento ); // recupera os atributos de carro tbestabelecimento. id = c. getLong(idxId ); tbestabelecimento. nome = c. getString(idxNome ); tbestabelecimento. descricao = c. getString(idxDescricao ); tbestabelecimento. endereco = c. getString(idxEndereco ); tbestabelecimento. telefone = c. getString(idxTelefone ); tbestabelecimento. horario = c. getString(idxHorario ); tbestabelecimento. fonte = c. getString(idxFonte ); //estabelecimento.foto = c.getBlob(idxFoto); } while (c. moveToNext()); } c. close(); return tbestabelecimentos; } // Retorna uma lista com todas as obras public List<Atracao> listarObras () { Cursor c = getCursorObra (); List<Atracao> obras = new ArrayList<Atracao> (); if (c. moveToFirst()) { // Recupera os índices das colunas int idxId = c. getColumnIndex(Atracoes._ID ); int idxNome = c. getColumnIndex(Atracoes. NOME); int idxDescricao = c. getColumnIndex(Atracoes. DESCRICAO); // Loop até o final do { Atracao obra = new Atracao (); obras. add(obra ); // recupera os atributos de obra obra. id = c. getLong(idxId ); obra. nome = c. getString(idxNome ); obra. descricao = c. getString(idxDescricao ); } while (c. moveToNext()); } c. close(); return obras; } // Busca o estabelecimento pelo nome "select * from estabelecimento where nome=?" public TBEstabelecimento buscarEstabelecimentoPorNome (String nome ) { TBEstabelecimento tbestabelecimento = null; try { // Idem a: SELECT _id,nome,descricao.. from ESTABELECIMENTO where nome = ? Cursor c = db. query(NOME_TABELA1, TBEstabelecimento. colunas, TBEstabelecimentos. NOME + "='" + nome + "'", null, null, null, null); // Se encontrou... if (c. moveToNext()) { tbestabelecimento = new TBEstabelecimento (); // utiliza os métodos getLong(), getString(), getInt(), etc para recuperar os valores tbestabelecimento. id = c. getLong(0); tbestabelecimento. nome = c. getString(1); tbestabelecimento. descricao = c. getString(2); tbestabelecimento. endereco = c. getString(3); tbestabelecimento. telefone = c. getString(4); tbestabelecimento. horario = c. getString(5); tbestabelecimento. fonte = c. getString(6); //estabelecimento.foto = c.getString(7); c. close(); } } catch (SQLException e ) { return null; } return tbestabelecimento; } // Busca a obra pelo nome "select * from obra where nome=?" public Atracao buscarObraPorNome (String nome ) { Atracao obra = null; try { // Idem a: SELECT _id,nome,descricao.. from OBRA where nome = ? Cursor c = db. query(NOME_TABELA2, Atracao. colunas, Atracoes. NOME + "='" + nome + "'", null, null, null, null); // Se encontrou... if (c. moveToNext()) { obra = new Atracao (); // utiliza os métodos getLong(), getString(), getInt(), etc para recuperar os valores obra. id = c. getLong(0); obra. nome = c. getString(1); obra. descricao = c. getString(2); c. close(); } } catch (SQLException e ) { return null; } return obra; } // Busca um estabelecimento utilizando as configurações definidas no // SQLiteQueryBuilder // Utilizado pelo Content Provider de estabelecimento public Cursor query (SQLiteQueryBuilder queryBuilder, String[] projection, String selection, String[] selectionArgs, String groupBy, String having, String orderBy ) { Cursor c = queryBuilder. query(this. db, projection, selection, selectionArgs, groupBy, having, orderBy ); return c; } @Override public synchronized void close () { if(db != null) db. close(); super. close(); }} Eu tenho uma tela inicial e ao clicar em um botão ela chama a classe abaixo:public class CadastroEstabelecimento extends ListActivity { public static DataBaseHelper databasehelper; private List<TBEstabelecimento> tbestabelecimentos; @Override public void onCreate (Bundle icicle ) { super. onCreate(icicle ); try{ databasehelper = new DataBaseHelper (this); }catch(SQLException e ) { throw new Error("Unable to create database"); } atualizarLista (); } protected void atualizarLista () { // Pega a lista de estabelecimentos e exibe na tela tbestabelecimentos = databasehelper. listarEstabelecimentos(); // Adaptador de lista customizado para cada linha de um estabelecimento setListAdapter (new EstabelecimentoListAdapter (this, tbestabelecimentos )); } @Override protected void onDestroy () { super. onDestroy(); // Fecha o banco databasehelper. close(); }} Porém está apresentando o seguinte erro no LogCat:11-01 22:27:51.496: E/AndroidRuntime(1747): Uncaught handler: thread main exiting due to uncaught exception 11-01 22:27:51.514: E/AndroidRuntime(1747): java.lang.RuntimeException: Unable to start activity ComponentInfo{guia.virtual.android/guia.virtual.android.CadastroEstabelecimento}: java.lang.NullPointerException 11-01 22:27:51.514: E/AndroidRuntime(1747): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 11-01 22:27:51.514: E/AndroidRuntime(1747): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 11-01 22:27:51.514: E/AndroidRuntime(1747): at android.app.ActivityThread.access$2200(ActivityThread.java:119) 11-01 22:27:51.514: E/AndroidRuntime(1747): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 11-01 22:27:51.514: E/AndroidRuntime(1747): at android.os.Handler.dispatchMessage(Handler.java:99) 11-01 22:27:51.514: E/AndroidRuntime(1747): at android.os.Looper.loop(Looper.java:123) 11-01 22:27:51.514: E/AndroidRuntime(1747): at android.app.ActivityThread.main(ActivityThread.java:4363) 11-01 22:27:51.514: E/AndroidRuntime(1747): at java.lang.reflect.Method.invokeNative(Native Method) 11-01 22:27:51.514: E/AndroidRuntime(1747): at java.lang.reflect.Method.invoke(Method.java:521) 11-01 22:27:51.514: E/AndroidRuntime(1747): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 11-01 22:27:51.514: E/AndroidRuntime(1747): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 11-01 22:27:51.514: E/AndroidRuntime(1747): at dalvik.system.NativeStart.main(Native Method) 11-01 22:27:51.514: E/AndroidRuntime(1747): Caused by: java.lang.NullPointerException 11-01 22:27:51.514: E/AndroidRuntime(1747): at guia.virtual.android.CadastroEstabelecimento.atualizarLista(CadastroEstabelecimento.java:50) 11-01 22:27:51.514: E/AndroidRuntime(1747): at guia.virtual.android.CadastroEstabelecimento.onCreate(CadastroEstabelecimento.java:42) 11-01 22:27:51.514: E/AndroidRuntime(1747): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 11-01 22:27:51.514: E/AndroidRuntime(1747): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 11-01 22:27:51.514: E/AndroidRuntime(1747): ... 11 more Espero que você consiga entender, pois a classe que cria o banco ficou grande com o código do link....
|
| 01 Nov 2012, 20:29 |
|
 |
|
A H Gusukuma
Dalvik Virtual Machine
Data de registro: 17 Jul 2011, 10:55 Mensagens: 1997 Localização: São Paulo
|
 Re: SQLite Expert Personal
Verifica na linha 50 do CadastroEstabelecimento.java, o erro ocorre nessa linha.
_________________Abraços ___________ Novo App: CalcMat - Calculadora de materiais para concreto Blog: Agorandroid - sobre programação Android Twitter: @Agorandroid ___________ Campanha: Facilite sua vida e a dos outros usuários Netiqueta:Procure responder as sugestões. Quando encontrar a solução, coloque [Resolvido] no primeiro post o mais rápido possível. Lembre-se de agradecer às pessoas que ajudaram e poste a solução do problema.
|
| 01 Nov 2012, 20:42 |
|
 |
|
Cah Vitale
What is AVD?
Data de registro: 01 Nov 2012, 19:09 Mensagens: 14
|
 Re: SQLite Expert Personal
Eu verifiquei e fiz um debug do código e meu db está nulo, mesmo depois de passar pela linha db = this.getReadableDatabase() e pela linha db = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); ele continua nulo. Porque será? Nessa linha que você falou é onde eu tento mostrar as informações, mas como o banco está nulo, meu cursor também fica nulo.
|
| 02 Nov 2012, 12:48 |
|
 |
|
A H Gusukuma
Dalvik Virtual Machine
Data de registro: 17 Jul 2011, 10:55 Mensagens: 1997 Localização: São Paulo
|
 Re: SQLite Expert Personal
Verifica porque não está copiando do assets.
_________________Abraços ___________ Novo App: CalcMat - Calculadora de materiais para concreto Blog: Agorandroid - sobre programação Android Twitter: @Agorandroid ___________ Campanha: Facilite sua vida e a dos outros usuários Netiqueta:Procure responder as sugestões. Quando encontrar a solução, coloque [Resolvido] no primeiro post o mais rápido possível. Lembre-se de agradecer às pessoas que ajudaram e poste a solução do problema.
|
| 02 Nov 2012, 13:09 |
|
 |
|
Cah Vitale
What is AVD?
Data de registro: 01 Nov 2012, 19:09 Mensagens: 14
|
 Re: SQLite Expert Personal
Certo, mas como posso verificar isso? Pode ser quando chamo a classe DataBaseHelper?
|
| 02 Nov 2012, 19:33 |
|
 |
|
A H Gusukuma
Dalvik Virtual Machine
Data de registro: 17 Jul 2011, 10:55 Mensagens: 1997 Localização: São Paulo
|
 Re: SQLite Expert Personal
1. Compara a sua implementação com o tutorial 2. Segue pelo debug quais métodos estão executando
_________________Abraços ___________ Novo App: CalcMat - Calculadora de materiais para concreto Blog: Agorandroid - sobre programação Android Twitter: @Agorandroid ___________ Campanha: Facilite sua vida e a dos outros usuários Netiqueta:Procure responder as sugestões. Quando encontrar a solução, coloque [Resolvido] no primeiro post o mais rápido possível. Lembre-se de agradecer às pessoas que ajudaram e poste a solução do problema.
|
| 02 Nov 2012, 20:26 |
|
 |
|
Cah Vitale
What is AVD?
Data de registro: 01 Nov 2012, 19:09 Mensagens: 14
|
 Re: SQLite Expert Personal
Eu já comparei, está identico o código... Só uma coisa que não fica claro no tutorial, o código abaixo, eu posso colocar na minha classe inicial? DataBaseHelper myDbHelper; myDbHelper = new DataBaseHelper (this); try { myDbHelper. createDataBase(); } catch (IOException e ) { throw new Error("Unable to create database"); } catch (Exception e ) { // TODO Auto-generated catch block e. printStackTrace(); } try { myDbHelper. openDataBase(); } catch (SQLException e ) { throw e; } Pois eu acho que é quando eu passo esse "this" que vai nulo, mas eu não sei como corrigir isso... Ele entra nos métodos, mas sempre mantém o db nulo....
Editado pela última vez por A H Gusukuma em 03 Nov 2012, 06:43, num total de 1 vezes
Tags código
|
| 02 Nov 2012, 20:34 |
|
 |
|
A H Gusukuma
Dalvik Virtual Machine
Data de registro: 17 Jul 2011, 10:55 Mensagens: 1997 Localização: São Paulo
|
 Re: SQLite Expert Personal
Não só pode, como deve! Sem essa parte o esquema não funciona
_________________Abraços ___________ Novo App: CalcMat - Calculadora de materiais para concreto Blog: Agorandroid - sobre programação Android Twitter: @Agorandroid ___________ Campanha: Facilite sua vida e a dos outros usuários Netiqueta:Procure responder as sugestões. Quando encontrar a solução, coloque [Resolvido] no primeiro post o mais rápido possível. Lembre-se de agradecer às pessoas que ajudaram e poste a solução do problema.
|
| 02 Nov 2012, 21:19 |
|
 |
|
Cah Vitale
What is AVD?
Data de registro: 01 Nov 2012, 19:09 Mensagens: 14
|
 Re: SQLite Expert Personal
Então eu coloquei na minha tela inicial, mas quando tento abrir a classe com o listview da erro. O banco está nulo. Tentei anexar minhas classes, mas não permite arquivo.java, mas caso você queira dar uma olhada eu copio no word e te envio. Pois tenho uma classe inicial onde coloquei essa parte de código abaixo, e ao clicar em um botão nessa classe inicial era pra abrir uma classe que acessa os métodos da classe DataBaseHelper e mostra a lista. Mas da erro, pois está nulo. Não sei se devo colocar outra coisa no lugar do "this".
|
| 02 Nov 2012, 21:37 |
|
 |
|
A H Gusukuma
Dalvik Virtual Machine
Data de registro: 17 Jul 2011, 10:55 Mensagens: 1997 Localização: São Paulo
|
 Re: SQLite Expert Personal
Para colocar o código java é só colar o código entre as tags: "[java]" codigo java "[java]" , sem as aspas. Eu não tenho como analisar código a não ser pelo forum. Debuga o seu app e verifica porque não está conseguindo copiar o db.
_________________Abraços ___________ Novo App: CalcMat - Calculadora de materiais para concreto Blog: Agorandroid - sobre programação Android Twitter: @Agorandroid ___________ Campanha: Facilite sua vida e a dos outros usuários Netiqueta:Procure responder as sugestões. Quando encontrar a solução, coloque [Resolvido] no primeiro post o mais rápido possível. Lembre-se de agradecer às pessoas que ajudaram e poste a solução do problema.
|
| 02 Nov 2012, 23:07 |
|
 |
|
igor.chemin
Android application
Data de registro: 22 Nov 2011, 12:58 Mensagens: 84
|
 Re: SQLite Expert Personal
Bom dia Cah Vitale! Já passei pelo mesmo problema que vc, tentei utilizar este exemplo do link http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/#comment-2046 Não tive sucesso! Daí resolvi o problema fazendo de outra forma. aki o link do meu tópico que resolvi isso: http://www.portalandroid.org/comunidade/viewtopic.php?f=26&t=21755 Este código do que postei ai no link e para fazer a copia do banco que esta na pasta assets para pasta do dispositivo! Depois fiz outro metodo que verifica si já existe um banco ou não para pode fazer a copia! private boolean CheckDataDB () { try { Log. i("Entro no ChekDB!", "Aviso"); String myPath = DB_PATH + nmBD; checkDB = SQLiteDatabase. openDatabase(myPath, null, SQLiteDatabase. OPEN_READONLY); Log. i("CheckDB=" + checkDB, "Aviso"); } catch (Exception e ) { Log. e("Banco de dados não existe ainda !", "Erro"); } if (checkDB != null) { checkDB. close(); return true; } else { return false; } }
|
| 03 Nov 2012, 12:19 |
|
 |
|
Cah Vitale
What is AVD?
Data de registro: 01 Nov 2012, 19:09 Mensagens: 14
|
 Re: SQLite Expert Personal
Bom dia Igor, eu tinha visto esse seu post, vi que você também não conseguiu seguindo esse link. Tentarei utilizar os códigos que você postou e qualquer coisa posto aqui alguma dúvida. Obrigada pela ajuda A H, caso não de certo com o código do Igor, eu posto minhas classes pra vocês verem com as tags [java] ok? Desde já eu agradeço a ajuda de vocês.
|
| 04 Nov 2012, 12:24 |
|
 |
|
igor.chemin
Android application
Data de registro: 22 Nov 2011, 12:58 Mensagens: 84
|
 Re: SQLite Expert Personal
Boa tarde Cah Vitale! Sim vc pode coloca as imagens zipadas na pasta “assetes” quando sua aplicação for executada fazer um método para cria uma pasta no sdcard e copiar e extrai as imagens para pasta dentro do sdcard. Depois e so vc usa o método para carregar as imagens. Caso ainda tenha dificuldade poste ai que t do uma forma e t mostro como fiz na minha aplicação para copiar o banco e as imagens!
|
| 04 Nov 2012, 14:38 |
|
 |
|
Cah Vitale
What is AVD?
Data de registro: 01 Nov 2012, 19:09 Mensagens: 14
|
 Re: SQLite Expert Personal
Boa tarde Igor e A H! O banco ainda está apresentando o erro de NullPointerException... Vou colocar abaixo minhas classes. Minha aplicação inicia com uma activity Splash que mostra uma foto. Depois é chamada a Activity principal. Activity principal: public class GuiaVirtualActivity extends Activity { @Override public void onCreate (Bundle savedInstanceState ) { super. onCreate(savedInstanceState ); setContentView (R. layout. main_inicial); DataBaseHelper myDbHelper; myDbHelper = new DataBaseHelper (this); try { myDbHelper. createDataBase(); } catch (IOException e ) { //Log.e("ERRO 3!!!!!!", e.getMessage()); throw new Error("Unable to create database"); } catch (Exception e ) { // TODO Auto-generated catch block e. printStackTrace(); } try { myDbHelper. openDataBase(); } catch (SQLException e ) { Log. e("ERRO!!!!!!", e. getMessage()); throw e; } } public void CopiaBanco (){ try{ Log. e("Inicio do teste 3", "Aviso"); AssetManager assetManager = getResources (). getAssets(); String arquiv= null; String[] files = null; //pega os aruivos da pasta assets e coloca em um vetor files files = assetManager. list(""); //caso tenha arquivos mostra if(files. length!= 0){ for(int i= 0;i<files. length;i++ ){ //mostra os arquivos do assets do seu projeto Log. d("Dados assets="+files [i ], "Aviso"); } //caminho de destino para onde eu quero copiar o arquivo da minha pasta assets OutputStream myOutput = new FileOutputStream( "/data/data/guia.virtual.android/databases/bd_guia"); //crio um inputStrream do meu arquivo que esta no assets. InputStream myInputs = assetManager. open("bd_guia"); // Transferir bytes do arquivo de entrada para a saída arquivo byte[] buffer = new byte[1024]; int length; while ((length = myInputs. read(buffer )) > 0) { myOutput. write(buffer, 0, length ); } // Cfecha e limpa tudo; myOutput. flush(); myOutput. close(); myInputs. close(); }else{ Log. i("Não tem nada na pasta assets", "Aviso"); } }catch (Exception e ) { Log. e("Erro no Test3", "Erro"); } } public void museu (View v ) { Intent i = new Intent (); i. setClass(this, CadastroEstabelecimento. class); startActivity (i ); } public void zoo (View v ) { Intent i = new Intent (); i. setClass(this, CadastroAtracao. class); startActivity (i ); } } Classe DataBaseHelper (classe do link): public class DataBaseHelper extends SQLiteOpenHelper { //The Android's default system path of your application database. private static String DB_PATH = "/data/data/guia.virtual.android/databases/"; private static String DB_NAME = "bd_guia"; //Nome das tabelas private static final String NOME_TABELA1 = "estabelecimento"; private static final String NOME_TABELA2 = "atracao"; private SQLiteDatabase db; private final Context myContext; /** * Constructor * Takes and keeps a reference of the passed context in order to access to the application assets and resources. * @param context */ public DataBaseHelper (Context context ) { super(context, DB_NAME, null, 1); this. myContext = context; } //Creates a empty database on the system and rewrites it with your own database. public void createDataBase () throws IOException{ boolean dbExist = checkDataBase (); if(dbExist ){ //Não faz nada, o banco já existe }else{ //By calling this method and empty database will be created into the default system path //of your application so we are gonna be able to overwrite that database with our database. db = this. getReadableDatabase(); //this.getReadableDatabase(); close (); try { copyDataBase (); } catch (IOException e ) { throw new Error("Error copying database"); } } } /** * Check if the database already exist to avoid re-copying the file each time you open the application. * @return true if it exists, false if it doesn't */ private boolean checkDataBase (){ SQLiteDatabase checkDB = null; try{ String myPath = DB_PATH + DB_NAME; checkDB = SQLiteDatabase. openDatabase(myPath, null, SQLiteDatabase. OPEN_READONLY); }catch(SQLiteException e ){ Log. e("Banco não existe ainda!!", "Erro"); //Log.e("Banco não existe ainda!!", e.getMessage()); //database does't exist yet. } if(checkDB != null){ checkDB. close(); return true; } else{ return false; } //return checkDB != null ? true : false; //return checkDB != null; } /** * Copies your database from your local assets-folder to the just created empty database in the * system folder, from where it can be accessed and handled. * This is done by transfering bytestream. * */ private void copyDataBase () throws IOException{ //Open your local db as the input stream InputStream myInput = myContext. getAssets(). open(DB_NAME ); // Path to the just created empty db String outFileName = DB_PATH + DB_NAME; //Open the empty db as the output stream OutputStream myOutput = new FileOutputStream(outFileName ); //transfer bytes from the inputfile to the outputfile byte[] buffer = new byte[1024]; int length; while ((length = myInput. read(buffer ))> 0){ myOutput. write(buffer, 0, length ); } //Close the streams myOutput. flush(); myOutput. close(); myInput. close(); } public void openDataBase () throws SQLException{ //Open the database String myPath = DB_PATH + DB_NAME; db = SQLiteDatabase. openDatabase(myPath, null, SQLiteDatabase. OPEN_READONLY); } @Override public void onCreate (SQLiteDatabase db ) { } @Override public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion ) { } /*********************** * * CLASSE REPOSITORIO * * * @param tbestabelecimento * @return */ //Salva o estabelecimento, insere um novo ou atualiza public long salvar (TBEstabelecimento tbestabelecimento ) { long id = tbestabelecimento. id; if (id != 0) { atualizar (tbestabelecimento ); } else { // Insere novo id = inserir (tbestabelecimento ); } return id; } // Salva a obra, insere uma nova ou atualiza public long salvarObra (Atracao obra ) { long id = obra. id; if (id != 0) { atualizarObra (obra ); } else { // Insere nova id = inserirObra (obra ); } return id; } // Insere um novo estabelecimento public long inserir (TBEstabelecimento tbestabelecimento ) { ContentValues values = new ContentValues (); values. put(TBEstabelecimentos. NOME, tbestabelecimento. nome); values. put(TBEstabelecimentos. DESCRICAO, tbestabelecimento. descricao); values. put(TBEstabelecimentos. ENDERECO, tbestabelecimento. endereco); values. put(TBEstabelecimentos. TELEFONE, tbestabelecimento. telefone); values. put(TBEstabelecimentos. HORARIO, tbestabelecimento. horario); values. put(TBEstabelecimentos. FONTE, tbestabelecimento. fonte); //values.put(Estabelecimentos.FOTO, estabelecimento.foto); long id = inserir (values ); return id; } // Insere um novo estabelecimento public long inserir (ContentValues valores ) { long id = db. insert(NOME_TABELA1, "", valores ); return id; } // Insere uma nova obra public long inserirObra (Atracao atracao ) { ContentValues values = new ContentValues (); values. put(Atracoes. NOME, atracao. nome); values. put(Atracoes. DESCRICAO, atracao. descricao); //values.put(Estabelecimentos.FOTO, estabelecimento.foto); long id = inserirObra (values ); return id; } // Insere uma nova obra public long inserirObra (ContentValues valores ) { long id = db. insert(NOME_TABELA2, "", valores ); return id; } // Atualiza o estabelecimento no banco. O id do estabelecimento é utilizado. public int atualizar (TBEstabelecimento tbestabelecimento ) { ContentValues values = new ContentValues (); values. put(TBEstabelecimentos. NOME, tbestabelecimento. nome); values. put(TBEstabelecimentos. DESCRICAO, tbestabelecimento. descricao); values. put(TBEstabelecimentos. ENDERECO, tbestabelecimento. endereco); values. put(TBEstabelecimentos. TELEFONE, tbestabelecimento. telefone); values. put(TBEstabelecimentos. HORARIO, tbestabelecimento. horario); values. put(TBEstabelecimentos. FONTE, tbestabelecimento. fonte); //values.put(Estabelecimentos.FOTO, estabelecimento.foto); String _id = String. valueOf(tbestabelecimento. id); String where = TBEstabelecimentos._ID + "=?"; String[] whereArgs = new String[] { _id }; int count = atualizar (values, where, whereArgs ); return count; } // Atualiza o estabelecimento com os valores abaixo // A cláusula where é utilizada para identificar o estabelecimento a ser atualizado public int atualizar (ContentValues valores, String where, String[] whereArgs ) { int count = db. update(NOME_TABELA1, valores, where, whereArgs ); return count; } // Atualiza a obra no banco. O id da obra é utilizado. public int atualizarObra (Atracao obra ) { ContentValues values = new ContentValues (); values. put(Atracoes. NOME, obra. nome); values. put(Atracoes. DESCRICAO, obra. descricao); String _id = String. valueOf(obra. id); String where = Atracoes._ID + "=?"; String[] whereArgs = new String[] { _id }; int count = atualizarObra (values, where, whereArgs ); return count; } // Atualiza a obra com os valores abaixo // A cláusula where é utilizada para identificar a obra a ser atualizado public int atualizarObra (ContentValues valores, String where, String[] whereArgs ) { int count = db. update(NOME_TABELA2, valores, where, whereArgs ); return count; } // Deleta o estabelecimento com o id fornecido public int deletar (long id ) { String where = TBEstabelecimentos._ID + "=?"; String _id = String. valueOf(id ); String[] whereArgs = new String[] { _id }; int count = deletar (where, whereArgs ); return count; } // Deleta o estabelecimento com os argumentos fornecidos public int deletar (String where, String[] whereArgs ) { int count = db. delete(NOME_TABELA1, where, whereArgs ); return count; } // Deleta a obra com o id fornecido public int deletarObra (long id ) { String where = Atracoes._ID + "=?"; String _id = String. valueOf(id ); String[] whereArgs = new String[] { _id }; int count = deletarObra (where, whereArgs ); return count; } // Deleta a obra com os argumentos fornecidos public int deletarObra (String where, String[] whereArgs ) { int count = db. delete(NOME_TABELA2, where, whereArgs ); return count; } // Busca o estabelecimento pelo id public TBEstabelecimento buscarEstabelecimento (long id ) { // select * from estabelecimento where _id=? Cursor c = db. query(true, NOME_TABELA1, TBEstabelecimento. colunas, TBEstabelecimentos._ID + "=" + id, null, null, null, null, null); if (c. getCount() > 0) { // Posicinoa no primeiro elemento do cursor c. moveToFirst(); TBEstabelecimento tbestabelecimento = new TBEstabelecimento (); // Lê os dados tbestabelecimento. id = c. getLong(0); tbestabelecimento. nome = c. getString(1); tbestabelecimento. descricao = c. getString(2); tbestabelecimento. endereco = c. getString(3); tbestabelecimento. telefone = c. getString(4); tbestabelecimento. horario = c. getString(5); tbestabelecimento. fonte = c. getString(6); //Blob foto = c.getBlob(7); return tbestabelecimento; } c. close(); return null; } // Busca a obra pelo id public Atracao buscarObra (long id ) { // select * from estabelecimento where _id=? Cursor c = db. query(true, NOME_TABELA2, Atracao. colunas, Atracoes._ID + "=" + id, null, null, null, null, null); if (c. getCount() > 0) { // Posicinoa no primeiro elemento do cursor c. moveToFirst(); Atracao obra = new Atracao (); // Lê os dados obra. id = c. getLong(0); obra. nome = c. getString(1); obra. descricao = c. getString(2); //estabelecimento.foto = c.getString(7); return obra; } c. close(); return null; } // Retorna um cursor com todos os estabelecimentos public Cursor getCursor () { try { // select * from estabelecimento return db. query(NOME_TABELA1, TBEstabelecimento. colunas, null, null, null, null, null, null); } catch (SQLException e ) { Log. e("ERRO CURSOR!!!!!!", e. getMessage()); return null; } } // Retorna um cursor com todos as obras public Cursor getCursorObra () { try { // select * from estabelecimento return db. query(NOME_TABELA2, Atracao. colunas, null, null, null, null, null, null); } catch (SQLException e ) { Log. e("ERRO!!!!!!", e. getMessage()); return null; } } // Retorna uma lista com todos os estabelecimentos public List<TBEstabelecimento> listarEstabelecimentos () { Cursor c = getCursor (); List<TBEstabelecimento> tbestabelecimentos = new ArrayList<TBEstabelecimento> (); if (c. moveToFirst()) { // Recupera os índices das colunas int idxId = c. getColumnIndex(TBEstabelecimentos._ID ); int idxNome = c. getColumnIndex(TBEstabelecimentos. NOME); int idxDescricao = c. getColumnIndex(TBEstabelecimentos. DESCRICAO); int idxEndereco = c. getColumnIndex(TBEstabelecimentos. ENDERECO); int idxTelefone = c. getColumnIndex(TBEstabelecimentos. TELEFONE); int idxHorario = c. getColumnIndex(TBEstabelecimentos. HORARIO); int idxFonte = c. getColumnIndex(TBEstabelecimentos. FONTE); //Blob idxFoto = c.getBlob(Estabelecimentos.FOTO); // Loop até o final do { TBEstabelecimento tbestabelecimento = new TBEstabelecimento (); tbestabelecimentos. add(tbestabelecimento ); // recupera os atributos do estabelecimento tbestabelecimento. id = c. getLong(idxId ); tbestabelecimento. nome = c. getString(idxNome ); tbestabelecimento. descricao = c. getString(idxDescricao ); tbestabelecimento. endereco = c. getString(idxEndereco ); tbestabelecimento. telefone = c. getString(idxTelefone ); tbestabelecimento. horario = c. getString(idxHorario ); tbestabelecimento. fonte = c. getString(idxFonte ); //estabelecimento.foto = c.getBlob(idxFoto); } while (c. moveToNext()); } c. close(); return tbestabelecimentos; } // Retorna uma lista com todas as obras public List<Atracao> listarObras () { Cursor c = getCursorObra (); List<Atracao> obras = new ArrayList<Atracao> (); if (c. moveToFirst()) { // Recupera os índices das colunas int idxId = c. getColumnIndex(Atracoes._ID ); int idxNome = c. getColumnIndex(Atracoes. NOME); int idxDescricao = c. getColumnIndex(Atracoes. DESCRICAO); // Loop até o final do { Atracao obra = new Atracao (); obras. add(obra ); // recupera os atributos de obra obra. id = c. getLong(idxId ); obra. nome = c. getString(idxNome ); obra. descricao = c. getString(idxDescricao ); } while (c. moveToNext()); } c. close(); return obras; } // Busca o estabelecimento pelo nome "select * from estabelecimento where nome=?" public TBEstabelecimento buscarEstabelecimentoPorNome (String nome ) { TBEstabelecimento tbestabelecimento = null; try { // Idem a: SELECT _id,nome,descricao.. from ESTABELECIMENTO where nome = ? Cursor c = db. query(NOME_TABELA1, TBEstabelecimento. colunas, TBEstabelecimentos. NOME + "='" + nome + "'", null, null, null, null); // Se encontrou... if (c. moveToNext()) { tbestabelecimento = new TBEstabelecimento (); // utiliza os métodos getLong(), getString(), getInt(), etc para recuperar os valores tbestabelecimento. id = c. getLong(0); tbestabelecimento. nome = c. getString(1); tbestabelecimento. descricao = c. getString(2); tbestabelecimento. endereco = c. getString(3); tbestabelecimento. telefone = c. getString(4); tbestabelecimento. horario = c. getString(5); tbestabelecimento. fonte = c. getString(6); //estabelecimento.foto = c.getString(7); c. close(); } } catch (SQLException e ) { return null; } return tbestabelecimento; } // Busca a obra pelo nome "select * from obra where nome=?" public Atracao buscarObraPorNome (String nome ) { Atracao obra = null; try { // Idem a: SELECT _id,nome,descricao.. from OBRA where nome = ? Cursor c = db. query(NOME_TABELA2, Atracao. colunas, Atracoes. NOME + "='" + nome + "'", null, null, null, null); // Se encontrou... if (c. moveToNext()) { obra = new Atracao (); // utiliza os métodos getLong(), getString(), getInt(), etc para recuperar os valores obra. id = c. getLong(0); obra. nome = c. getString(1); obra. descricao = c. getString(2); c. close(); } } catch (SQLException e ) { return null; } return obra; } // Busca um estabelecimento utilizando as configurações definidas no // SQLiteQueryBuilder // Utilizado pelo Content Provider de estabelecimento public Cursor query (SQLiteQueryBuilder queryBuilder, String[] projection, String selection, String[] selectionArgs, String groupBy, String having, String orderBy ) { Cursor c = queryBuilder. query(this. db, projection, selection, selectionArgs, groupBy, having, orderBy ); return c; } @Override public synchronized void close () { if(db != null) db. close(); super. close(); }} Classe CadastroEstabelecimento (classe que deveria abrir ao clicar no botão, porém da o erro NPE, mas quando eu uso o banco direto no emulador, tudo funciona normalmente): public class CadastroEstabelecimento extends ListActivity { protected static final int BUSCAR = 2;
//public static Repositorio repositorio; public static DataBaseHelper databasehelper;
//Cria uma lista da classe TBEstabelecimento private List<TBEstabelecimento> tbestabelecimentos; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); //repositorio = new Repositorio(this); atualizarLista(); } protected void atualizarLista() { // Pega a lista de estabelecimento e exibe na tela tbestabelecimentos = databasehelper.listarEstabelecimentos(); //tbestabelecimentos = repositorio.listarEstabelecimentos(); // Adaptador de lista customizado para cada linha de um estabelecimento setListAdapter(new EstabelecimentoListAdapter(this, tbestabelecimentos)); } } Igor, você pode ver que coloquei aquele seu código para copiar o banco da pasta assets na minha classe principal, com isso o problema com o getResources() parou. Você também colocou esse código onde chama o DataBaseHelper no onCreate da sua activity inicial? Eu agradeço se vocês puderem me ajudar a identificar o erro, pois eu acho que é na hora de copiar ou alguma coisa na classe DataBaseHelper, pois quando puxo o banco do emulador tudo funciona.
Editado pela última vez por Cah Vitale em 04 Nov 2012, 15:24, num total de 1 vezes
|
| 04 Nov 2012, 15:16 |
|
 |
|
igor.chemin
Android application
Data de registro: 22 Nov 2011, 12:58 Mensagens: 84
|
 Re: SQLite Expert Personal
edite este topico ai e coloque a targue "[\java]" para entender melhor seu codigo.
|
| 04 Nov 2012, 15:20 |
|
 |
|
igor.chemin
Android application
Data de registro: 22 Nov 2011, 12:58 Mensagens: 84
|
 Re: SQLite Expert Personal
to fazendo aki sua classe para t ajudar! me add no skype:igor.chemin
|
| 04 Nov 2012, 15:32 |
|
 |
|
igor.chemin
Android application
Data de registro: 22 Nov 2011, 12:58 Mensagens: 84
|
 Re: SQLite Expert Personal
vamos por partes! primeiro copiar o banco da pasta assets para pasta onde fica o projeto quando instalado! import java. io. FileOutputStream; import java. io. InputStream; import java. io. OutputStream; import android. app. Activity; import android. app. ProgressDialog; import android. content. res. AssetManager; import android. database. Cursor; import android. database. sqlite. SQLiteDatabase; import android. os. Bundle; import android. os. Handler; import android. util. Log; public class GuiaVirtualActivity extends Activity { private ProgressDialog progressDialog; String lstrArq = ""; Handler mHandler = new Handler (); SQLiteDatabase banco = null; SQLiteDatabase checkDB = null; Cursor c, c1, c2; String nmBD = "bd_guia"; String DB_PATH = "/data/data/guia.virtual.android/databases/"; AssetManager assetManager; /** Called when the activity is first created. */ @Override public void onCreate (Bundle savedInstanceState ) { super. onCreate(savedInstanceState ); setContentView (R. layout. main); CarregaDB (); } private boolean CheckDataDB () { try { Log. i("Entro no ChekDB!", "Aviso"); String myPath = DB_PATH + nmBD; checkDB = SQLiteDatabase. openDatabase(myPath, null, SQLiteDatabase. OPEN_READONLY); Log. i("CheckDB=" + checkDB, "Aviso"); } catch (Exception e ) { Log. e("Banco de dados não existe ainda !", "Erro"); } if (checkDB != null) { checkDB. close(); return true; } else { return false; } } public void Copy_DB_Pronto () { try { assetManager = getResources (). getAssets(); banco = openOrCreateDatabase (nmBD, MODE_WORLD_READABLE, null); // Caminho banco de dados para sistema android OutputStream myOutput = new FileOutputStream( "/data/data/guia.virtual.android/databases/bd_guia"); // pega o banco do projeoto e copia para local onde android possa // ler este banco InputStream myInputs = assetManager. open("bd_guia.db"); // Transfer bytes from the input file to the output file byte[] buffer = new byte[1024]; int length; while ((length = myInputs. read(buffer )) > 0) { myOutput. write(buffer, 0, length ); } // Close and clear the streams myOutput. flush(); myOutput. close(); myInputs. close(); } catch (Exception e ) { Log. e("Erro no Copy DB", "Erro"); } finally { banco. close(); } } public void CarregaDB () { try { Progresso2 ("Criando Banco de Dados"); new Thread() { @Override public void run () { boolean Db = CheckDataDB (); if (Db == true) { Log. i("Banco ja existe!", "Aviso"); //pode coloca aki um codigo para fazer uma nova acao como chamar uma nova Activity ou entao carregar sua lista } else { Log. i("Banco ainda nao existe! chama metodo Copy", "Aviso"); Copy_DB_Pronto (); } progressDialog. dismiss(); } }. start(); } catch (Exception e ) { Log. e("Erro carregar DB", "Erro"); } } public void Progresso2 (final String titulo ) { runOnUiThread (new Runnable() { @Override public void run () { // TODO stub do método Auto-generated progressDialog = new ProgressDialog (GuiaVirtualActivity. this); progressDialog. setTitle(titulo ); progressDialog. setMessage("Processando, Aguarde..."); progressDialog. setIndeterminate(true); progressDialog. setCancelable(true); progressDialog. show(); } }); } }
|
| 04 Nov 2012, 15:47 |
|
 |
|
Cah Vitale
What is AVD?
Data de registro: 01 Nov 2012, 19:09 Mensagens: 14
|
 Re: SQLite Expert Personal
Igor muito obrigada pela ajuda, deu certo esse código que você postou...vlw msm....
|
| 04 Nov 2012, 21:33 |
|
 |
|
LuCk
Android application
Data de registro: 06 Set 2012, 11:31 Mensagens: 95
|
 Re: [RESOLVIDO] SQLite Expert Personal
Igor podias-me explicar essa parte? Estou com algumas duvidas. E tenho uma classe para a DB e possivel criar nisso e enviar a mensagem para a activity principal.? public void Progresso2 (final String titulo ) { runOnUiThread (new Runnable() { @Override public void run () { // TODO stub do método Auto-generated progressDialog = new ProgressDialog (GuiaVirtualActivity. this); progressDialog. setTitle(titulo ); progressDialog. setMessage("Processando, Aguarde..."); progressDialog. setIndeterminate(true); progressDialog. setCancelable(true); progressDialog. show(); } }); }
_________________ Sanou a sua dúvida ou resolveu o seu problema? 1º -> Compartilhe a solução postando-a, as pessoas com a mesma dúvida ou problema agradecem. 2º -> Adicione ao título do tópico "[RESOLVIDO]" para que os moderadores identifiquem que o seu tópico foi realmente resolvido.
|
| 06 Nov 2012, 14:05 |
|
|
|
Página 1 de 1
|
[ 21 Mensagens ] |
|
Quem está online |
Usuários vendo este fórum: adenilsonsena, Aderbal Nunes, albinoneto, Alexandrercarvalho, amarildolacerdas, americano, Andre Brito, andreluzz, andrigo, Augusto, Berbert, Bitetti, Bruno, C-3PO, caciara, Cajux, Carlos, carminati, cehills, Chewbacca, china, claudioalfonso, Cleiton, Cristranus, cyzko, Darth Maul, Darth Vader, deborazb, Demerval, denisfln, diemesleno, difrene, digiwise, dikiloco, Dudi_FC, ederson_4, edsonel, eduardo.ali, EduardoYC, Eliezer Reis, euguns, fabricioLeonard, felipe.cintra, ferrodecaju, flashking, frances135, Francisco_Geraldo, frankmendes, freak, Gabriel, gamito, gedoor, geeks, Google Android, Gooooogle, grandebaro, Guilherme, guilhermesmo, gutem25, HanNiBaLSeTDf, helder, Igor_M, ismavolk, italoraony, jandersonjc, jcdeveloper, jijo, jlucasps, jrchuteboxe, juliano, juliaojunior, jzaires, klausenner, kleberperea, leandroviana, Leonardo333, levita, LForce, lucasmadeira, lucianno, luciano.sml, lucianoedipo, mam_computer, marcelosv, marcow, marianatallas, mateusff, mayahaslinger, Mayara Trevisol, Mayron Cimardi, Microdesk, miguel, mlemos, mrangel, nakahara, neosun, neviim, Nidio Dolfini, nsansilva, nullPointer, o-raposa, paint-horse, PAMinhoto, Paulo Bizzo, pbcjunior, peterson.bah, pgbatera, Philipe Alves, phobos, piagg, piantino, pyrobit, Rafael Felix, rafaelvital, rafsantos, rayberg, rbenatti, rdchaves, reginaldo, regis.ror, renatocoliveira, rguadagnini, rixargolo, rmendes, rodrigoinnova, rogerio, ROGÉRIO RODRIGUES, Roll, ronamore, sasuke_sarutobi, sidnei.gs, siker C3PO, SirBagda, sjta, snonca, Tangerina, Thelemita, thiagoalgo, tiagofalcao, tnarnold, Toks, ubiratan, voliverio, waideman, washington, weverton, xGambit, Zam Wesell e 1 visitante |
|
Você não pode criar novos tópicos neste fórum Você não pode responder tópicos neste fórum Você não pode editar suas mensagens neste fórum Você não pode excluir suas mensagens neste fórum Você não pode enviar anexos neste fórum
|
|