
我有数据库考试指南,我已经创建了一个表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中的数据库中添加第二个表?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)