【问题标题】:Change Data of database更改数据库数据
【发布时间】:2013-11-08 16:37:57
【问题描述】:

我正在为 iOS 开发,我以前的数据库构建得很糟糕。现在已经有 140 个密封但在我的更新中我创建了一个新数据库但我无法删除数据...如何将数据从数据库 A 更改为数据库 B?我在 xCode 5 中使用 sqlite3

【问题讨论】:

  • 这是一个非常笼统的问题,但您可以将所有数据复制到新表(取决于手机上安装的应用程序中的数据量)或修改表中的现有数据通过为新数据添加新列甚至新表来创建数据库,并从现在开始使用它。希望这会有所帮助。

标签: ios database sqlite transfer


【解决方案1】:

以下是更改数据库表中列的示例代码:

- (void)alterDB {

    sqlite3_stmt *statement;
    sqlite3_stmt *selectStmt;

    const char *columnExists = "select callCount from lastCall";
    //Alter the table ONLY IF column we want doesn't exist
    if (sqlite3_prepare_v2(database, columnExists, -1, &selectStmt, NULL) != SQLITE_OK)
    {
        NSString *updateSQL = [NSString stringWithFormat:@"ALTER TABLE lastCall ADD COLUMN callCount INTEGER"];
        const char *update_stmt = [updateSQL UTF8String];
        sqlite3_prepare_v2(database, update_stmt, -1, &statement, NULL);

        if (sqlite3_step(statement) == SQLITE_DONE) {
            NSLog(@"DATABASE ALTERED");
        } else {
            NSLog(@"error altering database");
        }
    }

}

我希望这能给你一个想法。

【讨论】:

    【解决方案2】:

    编写迁移代码, 这将从数据库 A 中选择数据并将其插入数据库 B。

    【讨论】:

      【解决方案3】:

      在处理不同的架构时,我有一个方法,我在打开数据库时总是调用该方法,该方法检查为此目的预留的表中的架构版本,然后根据需要对架构进行任何更改。

      - (void) checkSchema {
          if([[self preferenceForKey:@"SchemaVersion"] isEqualToString: @"1"]) {
              [db sqlExecute:@"create table Documents(documentID int, description text, type text, url text, modifiedDate text, read int, fileName text, needsUpdate int, primary key(documentID,type));"];
              [self setPreference:@"2" ForKey:@"SchemaVersion"];
          }
      
          // etc. 
      }
      

      因此,在开发过程中,我可以添加架构更改,无论有人使用什么版本的应用程序,当他们升级时,他们都会获得最新的架构更改。

      正因为如此,以及将我的所有访问器方法更改为我现在使用 SimpleDB (https://github.com/AaronBratcher/SimpleDB) 的数据库的工作,我编写了一个键/值数据库。完全不同的数据访问方式,让事情变得更简单。

      【讨论】:

        猜你喜欢
        • 2022-08-18
        • 2015-07-19
        • 2019-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多