我目前正在尝试Java和Android的功能,并且想尝试创建数据库。目前,我的代码如下所示。事实是,它在创建数据库时崩溃。我收到此错误:
E / SQLiteDatabase:无法打开数据库“ fieldgame”。 android.database.sqlite.SQLiteCantOpenDatabaseException:未知错误(代码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")));
答案 0 :(得分:1)
您可以使用Context的 getDatabasePath 方法获取默认/推荐位置的路径,您可能需要创建数据库目录。
例如在活动的 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: >>>>> 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: <<<<<
答案 1 :(得分:0)
您已将<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
添加到清单中吗?