java - 无法解析符号 'MODE_PRIVATE'

标签 java android database sqlite android-sqlite

我正在尝试使用以下行在 Android Studio 中打开数据库:

SQLiteDatabase GardenDatabase = openOrCreateDatabase("myDatabase",MODE_PRIVATE,null);

但它给了我错误无法解析符号“MODE_PRIVATE”。我不明白出了什么问题,因为在我的项目中的其他地方的不同类中使用了完全相同的代码行,并且它之前工作得很好。

我的完整代码:

public class MyWorker extends Worker {

    public MyWorker (@NonNull Context context, @NonNull WorkerParameters params) {
        super(context, params);
    }

    @Override
    public Result doWork() {

        SQLiteDatabase myDatabase = openOrCreateDatabase("myDatabase",MODE_PRIVATE,null);
        //Do stuff

        return Result.success();
    }
}

进口:

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.support.annotation.NonNull;

import androidx.work.Result;
import androidx.work.Worker;
import androidx.work.WorkerParameters;

import static android.database.sqlite.SQLiteDatabase.openOrCreateDatabase;

我一直在使用这个网站来帮助编写我的数据库代码:https://www.tutorialspoint.com/android/android_sqlite_database.htm

最佳答案

正如您在问题下的评论中看到的,@BarryFruitman 指出:

SQLiteDatabase. openOrCreateDatabase() doesn't even take a "mode" as a second param

之后我评论道:

this openOrCreateDatabase() is a method of the ContextWrapper class

我们都是对的。

在您发布您所关注的教程的链接后,问题现在就显现出来了。

事实上,在本教程中,提出了这种方法:

SQLiteDatabase myDatabase = openOrCreateDatabase("myDatabase",MODE_PRIVATE,null);

这属于ContextWrapper类,
但是在同一个教程中提到的openOrCreateDatabase()签名是:

openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory)

openOrCreateDatabase(File file, SQLiteDatabase.CursorFactory factory)

它们都是SQLiteDatabase类的成员。
我相信这是教程的错误。

所以改成这样:

SQLiteDatabase gardenDatabase = SQLiteDatabase.openOrCreateDatabase(databaseNameWithPath, null);

它使用SQLiteDatabase类中的方法。
编辑
当然,您必须为变量databaseNameWithPath提供完全限定的路径和数据库名称,例如:

String databaseNameWithPath = "/data/data/" + <yourpackagename> + "/databases/" + "myDatabase";

并创建该目录(如果该目录尚不存在)。

关于java - 无法解析符号 'MODE_PRIVATE',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53676233/

相关文章:

android - 强制折叠 ActionBar 中的选项卡

PHP/MySQL - 比较 2 个不同数据库中的表

iPhone:如何实现波斯日历?

ios - Firebase 数据库不等于请求 - 替代解决方案(适用于 iOS)

java - 更改/增加方法内 while 循环条件的值 - 好或坏 -

android - 向 MuPDF android 添加注释

android - 如何以编程方式将 Layout_gravity 设置为 center|right?

java - 如何修复运行时不显示的 Activity

java - 使用java修改XML文件中的特定元素

java - 如何在MapView上添加多个标记——一百多个