为啥我不断获取数据库磁盘映像在 android studio 上格式错误
Posted
技术标签:
【中文标题】为啥我不断获取数据库磁盘映像在 android studio 上格式错误【英文标题】:Why do I keep getting database disk image is malformed on android studio为什么我不断获取数据库磁盘映像在 android studio 上格式错误 【发布时间】:2021-11-01 01:43:40 【问题描述】:当我尝试从添加到我在 android studio 上的 SQL 数据库中的第二个表中获取详细信息时,我不断获取数据库磁盘映像格式错误。 这是表格的代码sn-p
public static final class CourseInfoEntry implements BaseColumns
public static final String TABLE_NAME = "course_info";
public static final String COLUMN_COURSE_ID = "course_id";
public static final String COLUMN_COURSE_TITLE = "course_title";
public static final String SQL_CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY, " + COLUMN_COURSE_ID + " TEXT NOT NULL UNIQUE, " + COLUMN_COURSE_TITLE + " TEXT NOT NULL)";
public static final class NoteInfoEntry implements BaseColumns
//Constant for the table name
public static final String TABLE_NAME = "note_info";
//Constant for the table columns
public static final String COLUMN_COURSE_ID = "course_id";
public static final String COLUMN_NOTE_TITLE = "note_title";
public static final String COLUMN_NOTE_TEXT = "note_text";
//Constant to create the note info table
public static final String SQL_CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY, " +
COLUMN_NOTE_TITLE + " TEXT NOT NULL, " +
COLUMN_NOTE_TEXT + " TEXT, " +
COLUMN_COURSE_ID + " TEXT NOT NULL)";
这是从 SQLiteOpenHelper 类创建表的代码
public static final String DATABASE_NAME = "NoteKeeper.db";
public static final int DATABASE_VERSION = 1;
public NoteKeeperOpenHelper(@Nullable Context context)
super(context, DATABASE_NAME, null, DATABASE_VERSION);
@Override
public void onCreate(SQLiteDatabase db)
db.execSQL(NoteKeeperDatabaseContract.CourseInfoEntry.SQL_CREATE_TABLE);
db.execSQL(NoteKeeperDatabaseContract.NoteInfoEntry.SQL_CREATE_TABLE);
//Adding data to the tables
DatabaseDataWorker worker = new DatabaseDataWorker(db);
worker.insertCourses();
worker.insertSampleNotes();
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
当我在终端中使用 select * from course_id 检查第一个表的数据时,我得到了这个
sqlite> select * from course_info;
1|android_intents|Android Programming with Intents
2|android_async|Android Async Programming and Services
3|java_lang|Java Fundamentals: The Java Language
4|java_core|Java Fundamentals: The Core Platform
但是当我检查第二张表的数据时,我得到了这个
sqlite> select * from note_info;
Error: database disk image is malformed
【问题讨论】:
【参考方案1】:事实证明,只有当我在 Android Studio 的终端中使用命令行查询 SQLite 数据库时才会发生错误。
当我在 android studio 中使用数据库检查器时,数据查询很好,它返回第二个表中的数据,没有错误。
注意:Database Inspector 只能用于在支持 Android API 26 及更高版本的模拟器中运行的应用。
【讨论】:
以上是关于为啥我不断获取数据库磁盘映像在 android studio 上格式错误的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Keycloak 会不断重新部署相同的 .jar 文件?