【问题标题】:Update Database Sqlite更新数据库 Sqlite
【发布时间】:2011-02-16 08:44:17
【问题描述】:

我无法更新我的数据库:我连接到它,然后我使用此功能,但它必须执行但没有更新:

- (BOOL) updatePoint:(NSString *) word {

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"master.sqlite"];
    sqlite3_stmt *statement;
    if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) {
        int newPoint = point + 1;
        NSString *sql = [NSString stringWithFormat:@"UPDATE %@ SET Point='%d' WHERE Parola=?", 
                         dictionaries1[[[word substringWithRange:NSMakeRange(0,1)] intValue]-1],newPoint];

        if(sqlite3_prepare_v2(database, [sql UTF8String], -1, &statement, NULL)==SQLITE_OK)
            sqlite3_bind_text(statement,1,[word UTF8String] ,-1, SQLITE_TRANSIENT);
        sqlite3_step(statement); 

        sqlite3_finalize(statement);
        //sqlite3_reset(statement);
        sqlite3_close(database);
        return YES;
    } else
        return NO;
}

怎么了?

【问题讨论】:

  • 你怎么知道没有更新?
  • 因为,我从数据库中提取点(即我想要更新的值),点是相同的,总是 2,而不是第一次 2,第二次 3,第三个 4..ecc..
  • 我的意思是您是通过编程方式还是使用终端手动获得该值?
  • 当你的 Xcode 项目中有 db 文件时,它会在安装过程中被复制到 bundle 中。当您在模拟器上安装应用程序时,通常会覆盖具有其资源的应用程序(因此您的更改可能会被丢弃)。尝试添加一些对外部文件的引用(例如根目录中的 /test.db)。

标签: iphone objective-c


【解决方案1】:

你可以看看这个,上面的更新代码看起来不错,但唯一可能出现的问题可能是由于数据库被覆盖,或者它可能不在指定的位置。 Problem with inserting data into a table

您可以用更新语句替换插入代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多