【问题标题】:NullPointerException at the first line at getReadableDatabase在 getReadableDatabase 的第一行出现 NullPointerException
【发布时间】:2015-08-17 10:56:21
【问题描述】:

我在 getReadbleDatabase 遇到空指针异常

 public List<Offer> getOffers(String offer_category)
        {
            db = this.getReadableDatabase();
            String sql = "select * from offer_db "+TABLE_OFFER + " where "+ OFFER_CATEGORY+ " is "+ offer_category;
            Cursor cur = db.rawQuery(sql,null);
            cur.moveToFirst();
       }

这里是 logcat 数据

引起:java.lang.NullPointerException at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224) 在 android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:188) 在 com.example.shreyfrapp.DatabaseHandler.getOffers(DatabaseHandler.java:61) 在 com.example.shreyfrapp.FragmentTab1.onCreate(FragmentTab1.java:39) 在 android.app.Fragment.performCreate(Fragment.java:1678) 在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:859) 在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 在 android.app.BackStackRecord.run(BackStackRecord.java:684) 在 android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447) 在 android.app.Activity.performStart(Activity.java:5240) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 在 android.app.ActivityThread.access$800(ActivityThread.java:135) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5021) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 在 dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 假设 logcat 在 getDatabaseLocked() 中显示 NPE,请确保您将有效的 Context 传递给您的 sqlite 助手。
  • 当您获取 logcat 时,请查看 some SQLite Docs - 您需要在数据库 + 表名之间使用 .,并且还需要使用 = 而不是 is与列值和字符串周围的引号进行比较
  • 我已经发布了 logcat...

标签: android sqlite exception null


【解决方案1】:

用大写查询并尝试用“=”代替“is”。为什么在选择查询中将光标移到第一个?

【讨论】:

  • 在我实例化数据库对象的地方出现错误。查询必须稍后执行。
  • 你究竟访问的是哪个数据库?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-24
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 2019-04-25
  • 1970-01-01
相关资源
最近更新 更多