我正在为我的应用程序的SQLite DB添加一个表.我的所有语法都很好,而不是问题.但是我在创建新表时遇到了一些麻烦.我添加了新表....
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
db.execSQL(CREATE_REQUESTS);
db.execSQL(CREATE_OVERRIDE);
}
Run Code Online (Sandbox Code Playgroud)
我的创建方法.我有3张桌子.当我更新版本号时,我收到一条错误消息"已经创建了表请求(指的是CREATE_REQUESTS)." 看看我的onUpgrade方法......
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS contacts");
onCreate(db);
}
Run Code Online (Sandbox Code Playgroud)
让我理解,db.execSQL("DROP TABLE IF EXISTS contacts")在onCreate方法中引用我的DATABASE_CREATE表的行用于删除旧表,然后下一行onCreate(db);重新创建它.我没有向execSQL行添加请求,这是导致错误的原因.这是问题:我宁愿不丢失我已经拥有的两个表中的数据.有没有办法添加像我正在尝试做的表,而不是丢失所有旧数据?谢谢.
Ebo*_*ike 13
你可以做任何你想做的事onUpgrade.您可以使用ALTER向表中添加新列.
最糟糕的情况是,如果您的架构完全不同,则必须创建新表,使用旧表中的数据填充它,然后删除旧表.
无论如何,onUpgrade其设计旨在实现平滑升级而不会丢失任何数据.这取决于你正确实施它.
| 归档时间: |
|
| 查看次数: |
6690 次 |
| 最近记录: |