java - 为什么我不断获取数据库磁盘映像在 android studio 上格式错误
问题描述
当我尝试从添加到我在 android studio 上的 SQL 数据库中的第二个表中获取详细信息时,我不断获取数据库磁盘映像格式错误。这是表格的代码片段
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
解决方案
事实证明,只有当我在 Android Studio 的终端中使用命令行查询 SQLite 数据库时才会发生错误。
当我在 android studio 中使用数据库检查器时,数据查询很好,它返回第二个表中的数据而没有错误。
注意:Database Inspector 只能用于在支持 Android API 26 及更高版本的模拟器中运行的应用程序。
推荐阅读
- mysql - Terraform mysql 提供程序。多个端点?
- vba - 在运行时模式下从 Access 表单中填写 word 文档
- c++ - 如何将不可复制的对象“推回”到向量中
- c++ - 如何在 C++ 中创建类型列表的笛卡尔积?
- mongoose - 如何在通过调用 mongoose save() 方法更新某些行时停止制作版本
- openstreetmap - 为 openstreetmap 获取实用的 maxspeed
- javascript - VueJS:当用户搜索某些东西时过滤对象数组
- python - XPath 或 BeautifulSoup(或其他方式)来选择和解析某个 div 块
- geode - java连接被拒绝错误与spring boot数据geode远程定位器
- java - OptaPlanner:如何在没有 .xml 配置文件的情况下构建求解器?