【问题标题】:FMDB executeUpdate not altering databaseFMDB executeUpdate 不改变数据库
【发布时间】:2013-07-24 17:27:31
【问题描述】:

向表中插入新项目完美无缺,但更新无效。

我正在使用以下语句来更新我的数据库。

BOOL success = [fmDB executeUpdate:@"UPDATE activities SET type = ?, author = '?', 
                time = '?', location = '?', node = '?', nodeID = ? 
                WHERE itemid = ?", [NSNumber numberWithInt:itemType], author, 
                time, location, node, [NSNumber numberWithInt:nodeID], 
                [NSNumber numberWithInt:itemID], nil];

所有没有被包装成 NSNumber 的东西都是一个 NSString(它们都按预期注销)。

运行命令时收到 0 个错误(成功布尔返回 TRUE)

下次我读取我的数据库时,尚未进行更改。

有什么想法吗?

【问题讨论】:

  • 我希望数据库不在 app bundle 中,而是在某个可写的地方...
  • 数据库在设备上 - /var/mobile/Applications/*/Documents/FeedItems.db ,就像我说的,我可以插入它,只是不能更新已经存在的项目。/mobile/Applications/*/Documents/FeedItems.db跨度>
  • 跟踪执行似乎也正在注销被触发的正确语句
  • 在您提供的解决方案的链接中,更新查询没有用逗号分隔,我的是

标签: iphone ios sqlite fmdb


【解决方案1】:

好的,所以我让它工作了..有些方法..

 BOOL success = [fmDB executeUpdateWithFormat:@"UPDATE activites 
   SET type = %@, node = %@, time = %@, location = %@, author = %@, 
   nodeID = %@ WHERE itemid = %@", [NSNumber numberWithInt:itemType], 
   node, time, location, author, [NSNumber numberWithInt:nodeID], 
   [NSNumber numberWithInt:itemID], nil];

在我从字符串对象周围移除 ' ' 之前,这不起作用。

【讨论】:

    【解决方案2】:
     if([db open])
     {
        NSString *queryStr ;
        queryStr = [NSString stringWithFormat:@"Update activities SET type = ?, author = '?', 
                time = '?', location = '?', node = '?', nodeID = ? 
                WHERE itemid = ? ",[NSNumber numberWithInt:itemType], author, 
                time, location, node, [NSNumber numberWithInt:nodeID], 
                [NSNumber numberWithInt:itemID]];
        [db executeUpdate:queryStr];
        NSLog(@"UPDATE\n%@",queryStr);
      }
    

    【讨论】:

    • 你不能使用'?'在 [NSString stringWithFormat:] 中,如果你想这样做,你必须使用 %@。这基本上与我所做的没有什么不同,只是调用了两次 executeUpdate,没有保存任何更改。
    猜你喜欢
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多