Android–openOrCreateDatabase– 空指针异常

Android–openOrCreateDatabase– 空指针异常,第1张

概述我有我的类DAO,当我调用我的类conexao时,方法返回null,但为什么呢?publicvoidcriarBanco(){Conexaoconexao=newConexao();try{BANCO_DE_DADOS=conexao.abrirBanco();//<<<<<<<<<<<<<StringSQL=

我有我的类DAO,当我调用我的类conexao时,方法返回null,但为什么呢?

public voID criarBanco() {        Conexao conexao = new Conexao();        try {            BANCO_DE_DADOS = conexao.abrirBanco(); // <<<<<<<<<<<<<            String sql = "CREATE table IF NOT EXISTS tablecadastropessoa ( _ID INTEGER PRIMARY KEY, nome TEXT, telefone TEXT)";            BANCO_DE_DADOS.execsql(sql);        } catch (Exception e) {            Log.i(TAG, "Erro ao criar o banco" + e);        } finally {            //conexao.fecharBanco(BANCO_DE_DADOS);        }    }    // ABRIR BANCO    public sqliteDatabase abrirBanco(){        try {            BANCO_DE_DADOS = openorCreateDatabase(NOME_BANCO, MODE_PRIVATE, null); // RETURN NulL        } catch (Exception e) {            Util.exibirMensagem("Erro ao criar o banco: " + e, AulaCadastroActivity.context);            Log.i(TAG, "Erro ao abrir o banco: " + e);        }        return BANCO_DE_DADOS;    }

错误是

07-05 13:12:54.800: E/AndroIDRuntime(223): Uncaught handler: thread main exiting due to uncaught exception07-05 13:12:54.811: E/AndroIDRuntime(223): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.cadastro/br.cadastro.AulaCadastroActivity}: java.lang.NullPointerException07-05 13:12:54.811: E/AndroIDRuntime(223):  at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2496)07-05 13:12:54.811: E/AndroIDRuntime(223):  at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)07-05 13:12:54.811: E/AndroIDRuntime(223):  at androID.app.ActivityThread.access00(ActivityThread.java:119)07-05 13:12:54.811: E/AndroIDRuntime(223):  at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)07-05 13:12:54.811: E/AndroIDRuntime(223):  at androID.os.Handler.dispatchMessage(Handler.java:99)07-05 13:12:54.811: E/AndroIDRuntime(223):  at androID.os.Looper.loop(Looper.java:123)07-05 13:12:54.811: E/AndroIDRuntime(223):  at androID.app.ActivityThread.main(ActivityThread.java:4363)07-05 13:12:54.811: E/AndroIDRuntime(223):  at java.lang.reflect.Method.invokeNative(Native Method)07-05 13:12:54.811: E/AndroIDRuntime(223):  at java.lang.reflect.Method.invoke(Method.java:521)07-05 13:12:54.811: E/AndroIDRuntime(223):  at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)07-05 13:12:54.811: E/AndroIDRuntime(223):  at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:618)07-05 13:12:54.811: E/AndroIDRuntime(223):  at dalvik.system.NativeStart.main(Native Method)07-05 13:12:54.811: E/AndroIDRuntime(223): Caused by: java.lang.NullPointerException07-05 13:12:54.811: E/AndroIDRuntime(223):  at androID.content.Contextwrapper.openorCreateDatabase(Contextwrapper.java:193)07-05 13:12:54.811: E/AndroIDRuntime(223):  at br.cadastro.Conexao.abrirBanco(Conexao.java:20)07-05 13:12:54.811: E/AndroIDRuntime(223):  at br.cadastro.ContadosDAO.criarBanco(ContadosDAO.java:27)07-05 13:12:54.811: E/AndroIDRuntime(223):  at br.cadastro.AulaCadastroActivity.inicializar(AulaCadastroActivity.java:81)07-05 13:12:54.811: E/AndroIDRuntime(223):  at br.cadastro.AulaCadastroActivity.onCreate(AulaCadastroActivity.java:27)07-05 13:12:54.811: E/AndroIDRuntime(223):  at androID.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)07-05 13:12:54.811: E/AndroIDRuntime(223):  at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2459)07-05 13:12:54.811: E/AndroIDRuntime(223):  ... 11 more

解决方法:

很可能NOME_BANCO未在此行中初始化

BANCO_DE_DADOS = openorCreateDatabase(NOME_BANCO, MODE_PRIVATE, null);

这意味着你实际上在传递:

BANCO_DE_DADOS = openorCreateDatabase(null, MODE_PRIVATE, null);

因此空指针异常.请检查它是否设置为某个东西,并且它是一个有效的路径.

编辑:

更改文件名以具有正确的扩展名. .D b

private static String NOME_BANCO = "Cadastro";

变为:

private static String NOME_BANCO = "Cadastro.db";
总结

以上是内存溢出为你收集整理的Android – openOrCreateDatabase – 空指针异常全部内容,希望文章能够帮你解决Android – openOrCreateDatabase – 空指针异常所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1116920.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存