问题一:增加或删除表
思路:
1) 升级数据库版本号;
2) 根据旧版本号更新数据库;
例:将数据库升级为 DB_VERSION_3
public class MyDatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "nicole.db"; private static final int DB_VERSION_2 = 1; private static final int DB_VERSION_3 = 2; public MyDatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DB_VERSION_3); } @Override public void onCreate(SQLiteDatabase database) { createTable(database); } @Override public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) { switch (oldVersion) { case DB_VERSION_2: database.execSQL(xxxx); case DB_VERSION_3: dropTable(); default: } } @Override public void onDowngrade(SQLiteDatabase database, int arg1, int arg2) { dropTable(database); createTable(database); } }
问题二:更改表字段
思路:
1) 将TableC重命名为TableC_temp
SQL语句可以这样写:ALERT TABLE TableC RENAME TO TableC_temp;
2) 创建新的TableC表
3) 将数据从TableC_temp中插入到TableC表中
SQL语句可以这样写:INSERT INTO TableC (Col1, Col2, Col3) SELECT (Col1, Col2, Col3) FROM TableC_temp;
经过这三步,TableC就完成了更新,同时,也保留了原来表中的数据。
注意:
在onUpgrade()方法中,删除表时,注意使用事务处理,使得修改能立即反应到数据库文件中。
SQL语句的好坏直接影响查询效率,
Android使用SQLite,可参考教程 http://www.runoob.com/sqlite/sqlite-java.html