Java SQLite数据库创建openOrCreateDatabase,应用程序数据库的正确路径是什么
我目前正在尝试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)- 我认为问题在于我指定的路径,因为我只传递了数据库的名称。我的问题是如何简单地将正确的路径传递到应用程序数据库,以便能够从中读取数据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/
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: <<<<<