Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Dúvidas com SQLite (tentando implementar exemplo do livro do Lecheta)

Sqlite não faz validação dos dados inseridos.

Em 7 de outubro de 2015 10:25, Rômulo Nadler <romulofnadler@gmail.com> 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. <carisio@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:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
repositorio = new RepositorioCarro(this);
                // Outras bobagens não relacionadas
}

Obrigado

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();   }

Atenciosamente

Gorio
(www.gorio.eng.br)

 


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 25467
10-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 failed
10-07 11:52:53.305: E/Database(289): Failed to setLocale() when constructing, closing the database
10-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: main
10-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.NullPointerException
10-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 more


Obrigado,
L.

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

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



--

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

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário