为什么我无法在android服务中打开sqlite数据库?

时间:2015-11-07 15:06:22

标签: android

我初学者在android中想要在android服务中打开sqlite数据库:
写下这段代码:

public class MyService extends Service {

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        try {

                SQLiteDatabase db;
                db = SQLiteDatabase.openOrCreateDatabase(DATABASE_NAME, this.MODE_PRIVATE, null);
    }catch(Exception e){
    }

        return Service.START_FLAG_REDELIVERY;
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

}


但在这一行:

db = SQLiteDatabase.openOrCreateDatabase(DATABASE_NAME, this.MODE_PRIVATE, null);


我得到这个错误:
enter image description here


会发生什么?我该如何解决?谢谢。

1 个答案:

答案 0 :(得分:0)

正如错误所述,MODE_PRIVATE是静态的,并且您尝试使用Contextthis的实例来访问它,因为ServiceContext)的子类。

您可以在the documentation中看到MODE_PRIVATE是静态的:

public static final int MODE_PRIVATE

更改您的代码:

db = this.openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE, null);

我建议你看一下The Java™Tutorials中的Understanding Class Members

另外,请考虑@pskink的评论并阅读openOrCreateDatabase类中Context方法的the documentation