Não deu não. Fiz o insert:
create table android_metadata (locale text not null);
insert into android_metadata values ('pt_BR');
Daí copiei e tentei rodar. Mudou o erro:
Uma dúvida: Como é que ele sabe que o banco está na pasta "data\data\livro.android.cap14\databases\" ? Essa pasta é padrão? Ela não deveria ser setada em algum lugar?
10-07 13:55:27.352: I/livro(303): Tentando abrir banco
10-07 13:55:27.472: I/Database(303): sqlite returned: error code = 14, msg = cannot open file at source line 25467
10-07 13:55:27.472: I/Database(303): sqlite returned: error code = 14, msg = prepared statement aborts at 4: [DELETE FROM android_metadata]
10-07 13:55:27.472: E/Database(303): DELETE failed setting locale
10-07 13:55:27.542: E/Database(303): Failed to setLocale() when constructing, closing the database
10-07 13:55:27.542: E/Database(303): android.database.sqlite.SQLiteException: unable to open database file
10-07 13:55:27.542: E/Database(303): at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
10-07 13:55:27.542: E/Database(303): at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1950)
10-07 13:55:27.542: E/Database(303): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1818)
10-07 13:55:27.542: E/Database(303): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
10-07 13:55:27.542: E/Database(303): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
10-07 13:55:27.542: E/Database(303): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
10-07 13:55:27.542: E/Database(303): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:540)
10-07 13:55:27.542: E/Database(303): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
10-07 13:55:27.542: E/Database(303): at livro.android.cap14.RepositorioCarro.<init>(RepositorioCarro.java:25)
10-07 13:55:27.542: E/Database(303): at livro.android.cap14.CadastroCarros.onCreate(CadastroCarros.java:26)
10-07 13:55:27.542: E/Database(303): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-07 13:55:27.542: E/Database(303): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
10-07 13:55:27.542: E/Database(303): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
10-07 13:55:27.542: E/Database(303): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
10-07 13:55:27.542: E/Database(303): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
10-07 13:55:27.542: E/Database(303): at android.os.Handler.dispatchMessage(Handler.java:99)
10-07 13:55:27.542: E/Database(303): at android.os.Looper.loop(Looper.java:123)
10-07 13:55:27.542: E/Database(303): at android.app.ActivityThread.main(ActivityThread.java:4627)
10-07 13:55:27.542: E/Database(303): at java.lang.reflect.Method.invokeNative(Native Method)
10-07 13:55:27.542: E/Database(303): at java.lang.reflect.Method.invoke(Method.java:521)
10-07 13:55:27.542: E/Database(303): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-07 13:55:27.542: E/Database(303): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-07 13:55:27.542: E/Database(303): at dalvik.system.NativeStart.main(Native Method)
10-07 13:55:27.542: E/livro(303): Erro abrindo banco: android.database.sqlite.SQLiteException: unable to open database file
10-07 13:55:27.542: W/dalvikvm(303): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
10-07 13:55:27.602: E/AndroidRuntime(303): FATAL EXCEPTION: main
10-07 13:55:27.602: E/AndroidRuntime(303): java.lang.RuntimeException: Unable to start activity ComponentInfo{livro.android.cap14/livro.android.cap14.CadastroCarros}: java.lang.NullPointerException
10-07 13:55:27.602: E/AndroidRuntime(303): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
10-07 13:55:27.602: E/AndroidRuntime(303): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
10-07 13:55:27.602: E/AndroidRuntime(303): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
10-07 13:55:27.602: E/AndroidRuntime(303): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
10-07 13:55:27.602: E/AndroidRuntime(303): at android.os.Handler.dispatchMessage(Handler.java:99)
10-07 13:55:27.602: E/AndroidRuntime(303): at android.os.Looper.loop(Looper.java:123)
10-07 13:55:27.602: E/AndroidRuntime(303): at android.app.ActivityThread.main(ActivityThread.java:4627)
10-07 13:55:27.602: E/AndroidRuntime(303): at java.lang.reflect.Method.invokeNative(Native Method)
10-07 13:55:27.602: E/AndroidRuntime(303): at java.lang.reflect.Method.invoke(Method.java:521)
10-07 13:55:27.602: E/AndroidRuntime(303): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-07 13:55:27.602: E/AndroidRuntime(303): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-07 13:55:27.602: E/AndroidRuntime(303): at dalvik.system.NativeStart.main(Native Method)
10-07 13:55:27.602: E/AndroidRuntime(303): Caused by: java.lang.NullPointerException
10-07 13:55:27.602: E/AndroidRuntime(303): at livro.android.cap14.RepositorioCarro.getCursor(RepositorioCarro.java:98)
10-07 13:55:27.602: E/AndroidRuntime(303): at livro.android.cap14.RepositorioCarro.listarCarros(RepositorioCarro.java:105)
10-07 13:55:27.602: E/AndroidRuntime(303): at livro.android.cap14.CadastroCarros.atualizarLista(CadastroCarros.java:31)
10-07 13:55:27.602: E/AndroidRuntime(303): at livro.android.cap14.CadastroCarros.onCreate(CadastroCarros.java:27)
10-07 13:55:27.602: E/AndroidRuntime(303): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-07 13:55:27.602: E/AndroidRuntime(303): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
10-07 13:55:27.602: E/AndroidRuntime(303): ... 11 more
Em quarta-feira, 7 de outubro de 2015 10:44:53 UTC-3, Alex W. Baulé escreveu:
Cria uma tabela chamada android_metadata, com a coluna locale do tipo TEXT. Faz 1 insert com o valor "
pt_BR". Copia novamente o banco e testa.Em 7 de outubro de 2015 10:39, L. <car...@gmail.com> escreveu:Aquele script já rodou e já populou o banco. Eu notei essa diferença mesmo (entre int e string), mas é assim que o Lecheta fez no livro, então resolvi deixar desse jeito e populou direitinho.--O problema que estou tendo é em como acessar o banco pela aplicação no Android.
Em quarta-feira, 7 de outubro de 2015 10:25:48 UTC-3, Nadler escreveu:O ano esta como TEXT e você esta gravando interineo 1970 e não '1970'.Em 7 de outubro de 2015 10:11, L. <car...@gmail.com> escreveu:Não.O banco de dados foi criado com o seguinte script dentro do SQLite Expert:create table carro (_id integer primary key autoincrement, nome text not null, placa text not null, ano text not null);inser into carro (nome, placa, ano), values ('Fusca A', 'ABC-1234', 1950);inser into carro (nome, placa, ano), values ('Brasilia B', 'DEF-1234', 1960);inser into carro (nome, placa, ano), values ('Chevete C', 'GHI-1234', 1970);Depois disso, verifiquei no SQLite Expert e banco foi criado e populado. Então, seguindo as instruções do livro, startei o emulador e depois joguei o arquivo do banco de dados para a pasta "data\data\livro.android.cap14\databases\" . O código que chama o banco é:public class RepositorioCarro {private static final String CATEGORIA = "livro";public static final String NOME_BANCO = "livro_android";public static final String NOME_TABELA = "carro";protected SQLiteDatabase db;public RepositorioCarro(Context ctx) {try {Log.i(CATEGORIA, "Tentando abrir banco");db = ctx.openOrCreateDatabase(NOME_BANCO, Context.MODE_PRIVATE, null); Log.i(CATEGORIA, "Abriu banco"); // Ele não chega a printar essa linha no LogCat} catch (Exception e) {Log.e(CATEGORIA, "Erro abrindo banco: " + e.toString());}}// Outros métodos}E o onCreate da Activity que chama esse método:Obrigadoprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); repositorio = new RepositorioCarro(this);// Outras bobagens não relacionadas}
Em quarta-feira, 7 de outubro de 2015 09:25:21 UTC-3, gorio escreveu:fez exatamente isso ?public void onCreate(Context ctx,SQLiteDatabase db){ //openOrCreateDatabase --> Cria ou Abre banco de dados //(nome.db,permissão (modo), ...) // MODE_PRIVATE --> Priva o acesso do banco para somente aplicação db = ctx.openOrCreateDatabase(this.DATABASE_NAME ,Context.MODE_PRIVATE , null); db.execSQL(this.SQL_CREATE); //Criando tabela caso não exista!! db.close(); }2015-10-07 9:01 GMT-03:00 L. <car...@gmail.com>:Bom dia pessoal,estou tentando fazer os exemplos do capítulo 14 do livro do Lecheta e estou tendo alguns problemas tentando acessar o banco.Criei um banco de dados de teste usando a ferramenta SQLite Expert e populei de acordo com o que ele fala no livro. Depois disso, usando a aba File Explorer do eclipse, enviei o arquivo do banco ("livro_android") para a pasta data\data\livro.android.cap14\databases\ O erro está dando na linha que tenta abrir o banco:public static final String NOME_BANCO = "livro_android";public static final String NOME_TABELA = "carro";db = ctx.openOrCreateDatabase(NOME_BANCO, Context.MODE_PRIVATE, null); Eu não entendi muito bem o que está acontecendo e como tentar resolver isso. Alguém pode dar uma luz?Segue log do LogCat:10-07 11:52:53.265: I/Database(289): sqlite returned: error code = 14, msg = cannot open file at source line 2546710-07 11:52:53.265: I/Database(289): sqlite returned: error code = 14, msg = prepared statement aborts at 37: [CREATE TABLE IF NOT EXISTS android_metadata (locale TEXT)]10-07 11:52:53.265: E/Database(289): CREATE TABLE android_metadata failed10-07 11:52:53.305: E/Database(289): Failed to setLocale() when constructing, closing the database10-07 11:52:53.305: E/Database(289): android.database.sqlite.SQLiteException: unable to open database file 10-07 11:52:53.305: E/Database(289): at android.database.sqlite.SQLiteDatabase.native_ setLocale(Native Method) 10-07 11:52:53.305: E/Database(289): at android.database.sqlite.SQLiteDatabase.setLocale( SQLiteDatabase.java:1950) 10-07 11:52:53.305: E/Database(289): at android.database.sqlite.SQLiteDatabase.<init>( SQLiteDatabase.java:1818) 10-07 11:52:53.305: E/Database(289): at android.database.sqlite.SQLiteDatabase.openDatabase( SQLiteDatabase.java:817) 10-07 11:52:53.305: E/Database(289): at android.database.sqlite.SQLiteDatabase. openOrCreateDatabase( SQLiteDatabase.java:851) 10-07 11:52:53.305: E/Database(289): at android.database.sqlite.SQLiteDatabase. openOrCreateDatabase( SQLiteDatabase.java:844) 10-07 11:52:53.305: E/Database(289): at android.app.ContextImpl.openOrCreateDatabase( ContextImpl.java:540) 10-07 11:52:53.305: E/Database(289): at android.content.ContextWrapper. openOrCreateDatabase( ContextWrapper.java:203) 10-07 11:52:53.305: E/Database(289): at livro.android.cap14.RepositorioCarro.<init>( RepositorioCarro.java:25) 10-07 11:52:53.305: E/Database(289): at livro.android.cap14.CadastroCarros.onCreate( CadastroCarros.java:26) 10-07 11:52:53.305: E/Database(289): at android.app.Instrumentation.callActivityOnCreate( Instrumentation.java:1047) 10-07 11:52:53.305: E/Database(289): at android.app.ActivityThread.performLaunchActivity( ActivityThread.java:2627) 10-07 11:52:53.305: E/Database(289): at android.app.ActivityThread.handleLaunchActivity( ActivityThread.java:2679) 10-07 11:52:53.305: E/Database(289): at android.app.ActivityThread.access$2300(ActivityThread. java:125) 10-07 11:52:53.305: E/Database(289): at android.app.ActivityThread$H.handleMessage(ActivityThread. java:2033) 10-07 11:52:53.305: E/Database(289): at android.os.Handler.dispatchMessage(Handler.java: 99) 10-07 11:52:53.305: E/Database(289): at android.os.Looper.loop(Looper.java:123) 10-07 11:52:53.305: E/Database(289): at android.app.ActivityThread.main(ActivityThread.java:4627) 10-07 11:52:53.305: E/Database(289): at java.lang.reflect.Method.invokeNative(Native Method) 10-07 11:52:53.305: E/Database(289): at java.lang.reflect.Method.invoke(Method.java:521) 10-07 11:52:53.305: E/Database(289): at com.android.internal.os.ZygoteInit$ MethodAndArgsCaller.run( ZygoteInit.java:868) 10-07 11:52:53.305: E/Database(289): at com.android.internal.os.ZygoteInit.main(ZygoteInit. java:626) 10-07 11:52:53.305: E/Database(289): at dalvik.system.NativeStart.main(Native Method) 10-07 11:52:53.305: E/livro(289): Erro abrindo banco: android.database.sqlite.SQLiteException: unable to open database file 10-07 11:52:53.324: W/dalvikvm(289): threadid=1: thread exiting with uncaught exception (group=0x4001d800)10-07 11:52:53.344: E/AndroidRuntime(289): FATAL EXCEPTION: main10-07 11:52:53.344: E/AndroidRuntime(289): java.lang.RuntimeException: Unable to start activity ComponentInfo{livro.android.cap14/livro.android.cap14. CadastroCarros}: java.lang.NullPointerException 10-07 11:52:53.344: E/AndroidRuntime(289): at android.app.ActivityThread.performLaunchActivity( ActivityThread.java:2663) 10-07 11:52:53.344: E/AndroidRuntime(289): at android.app.ActivityThread.handleLaunchActivity( ActivityThread.java:2679) 10-07 11:52:53.344: E/AndroidRuntime(289): at android.app.ActivityThread.access$2300(ActivityThread. java:125) 10-07 11:52:53.344: E/AndroidRuntime(289): at android.app.ActivityThread$H.handleMessage(ActivityThread. java:2033) 10-07 11:52:53.344: E/AndroidRuntime(289): at android.os.Handler.dispatchMessage(Handler.java: 99) 10-07 11:52:53.344: E/AndroidRuntime(289): at android.os.Looper.loop(Looper.java:123) 10-07 11:52:53.344: E/AndroidRuntime(289): at android.app.ActivityThread.main(ActivityThread.java:4627) 10-07 11:52:53.344: E/AndroidRuntime(289): at java.lang.reflect.Method.invokeNative(Native Method) 10-07 11:52:53.344: E/AndroidRuntime(289): at java.lang.reflect.Method.invoke(Method.java:521) 10-07 11:52:53.344: E/AndroidRuntime(289): at com.android.internal.os.ZygoteInit$ MethodAndArgsCaller.run( ZygoteInit.java:868) 10-07 11:52:53.344: E/AndroidRuntime(289): at com.android.internal.os.ZygoteInit.main(ZygoteInit. java:626) 10-07 11:52:53.344: E/AndroidRuntime(289): at dalvik.system.NativeStart.main(Native Method) 10-07 11:52:53.344: E/AndroidRuntime(289): Caused by: java.lang.NullPointerException10-07 11:52:53.344: E/AndroidRuntime(289): at livro.android.cap14.RepositorioCarro.getCursor( RepositorioCarro.java:98) 10-07 11:52:53.344: E/AndroidRuntime(289): at livro.android.cap14.RepositorioCarro.listarCarros( RepositorioCarro.java:105) 10-07 11:52:53.344: E/AndroidRuntime(289): at livro.android.cap14.CadastroCarros.atualizarLista( CadastroCarros.java:31) 10-07 11:52:53.344: E/AndroidRuntime(289): at livro.android.cap14.CadastroCarros.onCreate( CadastroCarros.java:27) 10-07 11:52:53.344: E/AndroidRuntime(289): at android.app.Instrumentation.callActivityOnCreate( Instrumentation.java:1047) 10-07 11:52:53.344: E/AndroidRuntime(289): at android.app.ActivityThread.performLaunchActivity( ActivityThread.java:2627) 10-07 11:52:53.344: E/AndroidRuntime(289): ... 11 moreObrigado,L.To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.googlegroups.com .
For more options, visit https://groups.google.com/d/optout .
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com .
For more options, visit https://groups.google.com/d/optout .
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com .
For more options, visit https://groups.google.com/d/optout .
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.







0 comentários:
Postar um comentário