Java SQLite数据库创建openOrCreateDatabase,应用程序数据库的正确路径是什么

Java SQLite数据库创建openOrCreateDatabase,应用程序数据库的正确路径是什么,java,android,sqlite,Java,Android,Sqlite,我目前正在尝试Java和Android的功能,我想尝试创建数据库。目前,我的代码如下所示。问题是,它在创建数据库时崩溃。我得到这个错误: E/SQLiteDatabase:无法打开数据库“fieldgame”。 android.database.sqlite.SQLiteCantoPendDatabaseException:未知错误(代码14):无法打开数据库 我还有一个错误 03-15 18:39:30.406 32465-32486/com.example.game.fieldgame E/

我目前正在尝试Java和Android的功能,我想尝试创建数据库。目前,我的代码如下所示。问题是,它在创建数据库时崩溃。我得到这个错误:

E/SQLiteDatabase:无法打开数据库“fieldgame”。 android.database.sqlite.SQLiteCantoPendDatabaseException:未知错误(代码14):无法打开数据库

我还有一个错误

03-15 18:39:30.406 32465-32486/com.example.game.fieldgame E/SQLiteLog:(14)无法打开[8201f4e1c5]第35652行的文件 (14) os_unix.c:35652:(2)open(//fieldgame)-

我认为问题在于我指定的路径,因为我只传递了数据库的名称。我的问题是如何简单地将正确的路径传递到应用程序数据库,以便能够从中读取数据

 JSONObject json = jsonParser.makeHttpRequest(urlSendCode, "GET", params);
        SQLiteDatabase fieldgameDB = SQLiteDatabase.openOrCreateDatabase("fieldgame", null);
        fieldgameDB.execSQL("CREATE TABLE IF NOT EXISTS assignments(title VARCHAR,description VARCHAR,assignmentId INT, created_at TIMESTAMP);");
        fieldgameDB.execSQL("INSERT INTO assignments VALUES(json.get(title), json.get(description),json.get(id), json.get(created_at))");
        Cursor cursor;
        cursor = (Cursor) fieldgameDB.rawQuery("SELECT * FROM assignments WHERE assignmentId = 1", null);
        cursor.moveToFirst();
        System.out.print(cursor.getString(cursor.getColumnIndex("description")));

是否已将
添加到清单中?

您可以使用上下文的getDatabasePath方法获取默认/推荐位置的路径,您可能需要创建数据库目录

e、 g.在活动的onCreate方法中使用您的代码(为简单起见),然后:-

    mContext = this;

    // Create the database directory if it doesn't exist 
    File dbpath = mContext.getDatabasePath("fieldgames");
    if (!dbpath.getParentFile().exists()) {
        dbpath.getParentFile().mkdirs();
    }
    SQLiteDatabase fieldgameDB = SQLiteDatabase.openOrCreateDatabase(dbpath,null);
    fieldgameDB.execSQL("CREATE TABLE IF NOT EXISTS assignments(title VARCHAR,description VARCHAR,assignmentId INT, created_at TIMESTAMP);");
    fieldgameDB.execSQL("INSERT INTO assignments VALUES('title', 'description',1, 'created_at')");
    Cursor cursor;
    cursor = (Cursor) fieldgameDB.rawQuery("SELECT * FROM assignments", null);
    cursor.moveToFirst();
    DatabaseUtils.dumpCursor(cursor);
    System.out.print(cursor.getString(cursor.getColumnIndex("description")));
    cursor.close();
结果:-

03-16 08:01:23.606 13478-13478/?I/System.out:>>>>>>>转储游标android.database.sqlite。SQLiteCursor@2337112b
03-16 08:01:23.606 13478-13478/? I/System.out:0{
03-16 08:01:23.606 13478-13478/?I/System.out:title=标题
03-16 08:01:23.606 13478-13478/?I/System.out:说明=说明
03-16 08:01:23.606 13478-13478/?I/System.out:assignmentId=1
03-16 08:01:23.606 13478-13478/?I/System.out:created_at=created_at
03-16 08:01:23.606 13478-13478/?I/System.out:}

03-16 08:01:23.606 13478-13478/? 我没有。添加了它,但我仍然有这个问题。还更新了我的问题,错误为“无法在第行打开文件…”您是否可以尝试从设备/模拟器中删除该应用程序并再次运行
03-16 08:01:23.606 13478-13478/? I/System.out: >>>>> Dumping cursor android.database.sqlite.SQLiteCursor@2337112b
03-16 08:01:23.606 13478-13478/? I/System.out: 0 {
03-16 08:01:23.606 13478-13478/? I/System.out:    title=title
03-16 08:01:23.606 13478-13478/? I/System.out:    description=description
03-16 08:01:23.606 13478-13478/? I/System.out:    assignmentId=1
03-16 08:01:23.606 13478-13478/? I/System.out:    created_at=created_at
03-16 08:01:23.606 13478-13478/? I/System.out: }
03-16 08:01:23.606 13478-13478/? I/System.out: <<<<<