Android getReadableDatabase第一行的NullPointerException

Android getReadableDatabase第一行的NullPointerException,android,sqlite,exception,null,Android,Sqlite,Exception,Null,我在getReadbleDatabase上收到一个nullpointer异常 public List<Offer> getOffers(String offer_category) { db = this.getReadableDatabase(); String sql = "select * from offer_db "+TABLE_OFFER + " where "+ OFFER_CATEGORY+ " is

我在getReadbleDatabase上收到一个nullpointer异常

 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();
       }
public List getOffers(字符串offer\u类别)
{
db=this.getReadableDatabase();
String sql=“select*from offer\u db”+TABLE\u offer+”其中“+offer\u CATEGORY+”是“+offer\u CATEGORY”;
游标cur=db.rawQuery(sql,null);
cur.moveToFirst();
}
这是logcat数据

原因:java.lang.NullPointerException位于 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) 在 FragmentManagerImpl.moveToState(FragmentManager.java:1062) 运行(BackStackRecord.java:684) 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) Looper.loop(Looper.java:136)位于 android.app.ActivityThread.main(ActivityThread.java:5021)位于 java.lang.reflect.Method.Invokenactive(本机方法)位于 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(本机方法)


用大写字母表示查询,并在“is”处尝试“=”。为什么要将光标移动到select查询中的第一个位置?

假设logcat在
getDatabaseLocked()
中显示NPE,请确保将有效的
上下文
传递给您的sqlite帮助程序。在抓取logcat时,看一看-您的数据库+表名之间需要一个
,还需要使用
=
而不是
is
来与列值和字符串周围的引号进行比较我已经发布了日志猫…在我实例化数据库对象的地方出现了错误。查询必须稍后执行。实际上,您正在访问哪个数据库?