java– 如何在sqlite中的数据库中添加第二个表?

java– 如何在sqlite中的数据库中添加第二个表?,第1张

概述我有数据库考试指南,我已经创建了一个表table_subject和现在我想在这个数据库中创建第二个表(table_chapter).我的问题是如何在现有数据库中添加此表?我有以下代码.任何帮助赞赏.privatestaticfinalStringDATABASE_CREATE="createtableIFNOTEXISTS"+TABLE_S

我有数据库考试指南,我已经创建了一个表table_subject和现在
我想在这个数据库中创建第二个表(table_chapter).我的问题是如何在现有数据库中添加此表?我有以下代码.任何帮助赞赏.

private static final String DATABASE_CREATE = "create table IF NOT EXISTS "        + table_SUBJECT + "( " + ColUMN_ID        + " integer primary key autoincrement, "         + ColUMN_SUBJECT + " text not null, "        + ColUMN_CHAPTER + " text, "        + ColUMN_QUESTION + " text not null,"        + ColUMN_OPTIONA + " text not null,"        + ColUMN_OPTIONB + " text not null,"        + ColUMN_OPTIONC + " text not null,"        + ColUMN_OPTIOND + " text not null,"        + ColUMN_CORRECT + " text not null,"        + ColUMN_CONFIRM + " text not null);";    private static final String DATABASE_CREATE1 = "create table IF NOT EXISTS "    + table_CHAPTER + "( " + ColUMN_ID    + " integer primary key autoincrement, "     + ColUMN_SUBJECT + " text not null, "    + ColUMN_CHAPTER + " text, "    + ColUMN_QUESTION + " text not null,"    + ColUMN_OPTIONA + " text not null,"    + ColUMN_OPTIONB + " text not null,"    + ColUMN_OPTIONC + " text not null,"    + ColUMN_OPTIOND + " text not null,"    + ColUMN_CORRECT + " text not null,"    + ColUMN_CONFIRM + " text not null);";public MysqLiteHelper open() throws sqlException {    db = this.getWritableDatabase();    return this;}public MysqLiteHelper(Context context){    super(context, DATABASE_name, null, DATABASE_VERSION);}@OverrIDepublic voID onCreate(sqliteDatabase database) {    database.execsql(DATABASE_CREATE);    database.execsql(DATABASE_CREATE1);}

此代码不会创建第二个表.我想在我的数据库中使用这两个表.
它在logcat中显示以下错误.

03-21 18:31:06.551: ERROR/Database(8255): Error inserting chapter=paging correctoption=shadow copy craete a duplicate copy of page subject=operating system question=what is shadow copy? optiona=shadow copy craete a duplicate copy of page confirm=YES optionb=sahdow copy create paging  optionc=shadow copy delete duplicate page optiond=shadow copy delete original and create shadow copy03-21 18:31:06.551: ERROR/Database(8255): androID.database.sqlite.sqliteException: no such table: chapter: , while compiling: INSERT INTO chapter(chapter, correctoption, subject, question, optiona, confirm, optionb, optionc, optiond) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?);03-21 18:31:06.551: ERROR/Database(8255):     at androID.database.sqlite.sqliteCompiledsql.native_compile(Native Method)03-21 18:31:06.551: ERROR/Database(8255):     at androID.database.sqlite.sqliteCompiledsql.compile(sqliteCompiledsql.java:92)03-21 18:31:06.551: ERROR/Database(8255):     at   androID.database.sqlite.sqliteCompiledsql.<init>(sqliteCompiledsql.java:65)03-21 18:31:06.551: ERROR/Database(8255):     at androID.database.sqlite.sqliteProgram.<init>(sqliteProgram.java:83)03-21 18:31:06.551: ERROR/Database(8255):     at androID.database.sqlite.sqliteStatement.<init>(sqliteStatement.java:41)03-21 18:31:06.551: ERROR/Database(8255):     at androID.database.sqlite.sqliteDatabase.compileStatement(sqliteDatabase.java:1149)03-21 18:31:06.551: ERROR/Database(8255):     at androID.database.sqlite.sqliteDatabase.insertWithOnConflict(sqliteDatabase.java:1569)03-21 18:31:06.551: ERROR/Database(8255):     at androID.database.sqlite.sqliteDatabase.insert(sqliteDatabase.java:1426)03-21 18:31:06.551: ERROR/Database(8255):     at com.example.examguIDe.MysqLiteHelper.insertChapterData(MysqLiteHelper.java:212)03-21 18:31:06.551: ERROR/Database(8255):     at com.example.examguIDe.ObjectiveAddActivity.onClick(ObjectiveAddActivity.java:155)

解决方法:

创建另一个CREATE table String,然后在onCreate中再次调用execsql:

database.execsql(DATABASE_CREATE1);database.execsql(DATABASE_CREATE2);

编辑

要将另一个表添加到现有数据库,请按如下所示修改onUpgrade方法.每当需要升级数据库时都会调用onUpgrade;请注意,您必须增加VERSION_NUMBER(您希望将其包含在类中的私有实例变量中)才能使其生效.

@OverrIDepublic voID onUpgrade (sqliteDatabase db, int oldVersion, int newVersion) {    db.executesql(DATABASE_CREATE2);}
总结

以上是内存溢出为你收集整理的java – 如何在sqlite中的数据库中添加第二个表?全部内容,希望文章能够帮你解决java – 如何在sqlite中的数据库中添加第二个表?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1120316.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存