将列添加到表时可能发生的冲突

时间:2016-01-31 08:51:14

标签: android database sqlite

目前我在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列。

我知道我可以尝试一下来找出自己。但是,如果我尝试一下,我担心它会影响我现有的桌子。 希望有人能回答我的问题。谢谢

1 个答案:

答案 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?