目前我在android sqllite中有一个数据库,其中包含以下列的多个表,列A和列B.
现在我需要拥有A列,B列和C列的表,以便在数据库中创建后续的未来表。我可以保留A和B列的旧表而不改变任何东西。
所以我有以下的顾虑。
1假设我有以下代码
rssiDB.execSQL("CREATE TABLE IF NOT EXISTS " + rssiTableName + " (ssid VARCHAR, bssid VARCHAR , rssi INTEGER )" );
if not exists的含义是什么?如果我正在尝试创建一个表名已经存在但列数不同的表,那么表的创建是否会成功?实际会发生什么。
例如我有表名为testing20的表,列值为a743954759,-40
现在我要创建一个表名为testing20的表,列值为peterwifi,a7954759,-60
上面的代码会创建一个名称相同但列数不同的表。
2在数据库中,是否允许数据库具有许多不同列的表,或者数据库必须使每个表具有确切的列名或列名。
假设我有一个数据库,其中包含一个表名为testing1的表,其中包含A列和B列。我现在可以在数据库中添加一个表名为testing2的表,其中包含A列,B列和C列。
我知道我可以尝试一下来找出自己。但是,如果我尝试一下,我担心它会影响我现有的桌子。 希望有人能回答我的问题。谢谢
答案 0 :(得分:0)
表是数据库中的唯一对象,因此您可以定义两个具有相同名称的表。但您可以使用ALTER TABLE
方法上的onUpgrade()
函数更改现有表并添加新列,如下所示:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// If you need to add a column
if (newVersion > oldVersion) {
db.execSQL("ALTER TABLE foo ADD COLUMN new_column INTEGER DEFAULT 0");
}
}
有关详细信息,请参阅此问题How to add new Column to Android SQLite Database?