- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我觉得我已经阅读了 FMDB 的文档一百万遍了。我不确定为什么这段代码不起作用 - 我已经尝试了 executeUpdate 方法和 executeMethodWithFormat 及其相应的格式,但似乎都不起作用。 _dbArray 是一个字典数组。这些行返回正确的值 - 如果我复制并粘贴结果并在终端中运行查询,它会很好地删除记录。我是否遗漏了一些明显的东西?
- (IBAction)deleteDbEntry:(id)sender {
// get selected row
NSInteger row = [_dataTable selectedRow];
// get the entry number
NSString *idToDelete = [[_dbArray objectAtIndex:row] valueForKey:@"entryColumn"];
// open DB for writing
if (![db open]) {
[db open];
}
[db executeUpdate:@"DELETE FROM tbl1 WHERE entry = ?", idToDelete];
// close DB
if ([db open]) {
[db close];
}
[_dataTable reloadData];
return;
}
更新:我已经采纳了您的建议,但仍然无法正常工作,我不确定为什么。数据库的打开和关闭现在正在其他地方发生(谢谢@ccgus),我正在将字符串转换为 NSNumber(感谢@bryanmac)。 NSLog(@"myNumber is %@", myNumber);
调用返回正确的号码,我可以确认删除没有发生。 NSLog(@"Error %d: %@", [db lastErrorCode], [db lastErrorMessage]);
报告没有错误 (Error 0: (null)
) .我也试过:
[db executeUpdateWithFormat:@"DELETE FROM tbl1 WHERE entry = %@", myNumber];
和
[db executeUpdate:@"DELETE FROM tbl1 WHERE id = ?", [NSNumber numberWithInt:myNumber]];
第一个似乎应该有效,但我已经确认它不会删除该行。我的第二个错误是“不兼容的整数到指针的转换”。我错过了什么?
- (IBAction)deleteDbEntry:(id)sender {
// get selected row
NSInteger row = [_dataTable selectedRow];
// get the entry number
NSString *idToDelete = [[_dbArray objectAtIndex:row] valueForKey:@"entryColumn"];
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *myNumber = [f numberFromString:idToDelete];
NSLog(@"myNumber is %@", myNumber);
[db executeUpdate:@"DELETE FROM tbl1 WHERE entry = ?", myNumber];
NSLog(@"Error %d: %@", [db lastErrorCode], [db lastErrorMessage]);
[_dataTable reloadData];
return;
}
最佳答案
你的id是int吗?
如果是这样,尝试将 NSNumber 传递给格式化的更新语句。
这篇文章可以将 NSString 转换为 NSNumber。
How to convert an NSString into an NSNumber
[db executeUpdate:@"DELETE FROM tbl1 WHERE entry = ?", idNumber];
这是一篇相关的文章:
How to delete a row in a sqlite database table?
此外,请确保在语句后检查错误:
NSLog(@"Error %d: %@", [db lastErrorCode], [db lastErrorMessage]);
关于objective-c - 使用 FMDB 从 SQLite 数据库中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9475995/
我正在使用 Xcode 7.2 和 swift 2。部署目标是 ios 9.0 这个问题与之前提出的许多问题类似,但我的问题并不常见,或者没有找到任何引用。 我为 iOS 创建了一个 cocoa to
代码 A FMDBDatabase *db = xxxxx [db beginTransaction]; [db executeUpdate:xxxx]; xxxxxxx 代码 B FMDBDatab
我正在尝试打开我在资源中的项目中拥有的数据库。 问题是好像找不到数据库文件! 我尝试了完整的路径,它可以工作,但这不是一个好的解决方案。 我想现在怎么打开它! 我正在使用此代码: db = [FMDa
我是 iOS 开发新手,我遇到了一个问题。我正在尝试使用 FMDB 更新表,但尽管它在所有模拟器中都有效,但在真实设备上却不起作用。我确信数据库已传输到设备,因为所有选择查询都正常运行。另一方面,所有
我想检查数据库中是否有一个 id 列表。这是我的代码... NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil]; NSStri
我使用 sqlite 和 fmdb 包装器。我的加载数据库代码是这样的: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocument
使用主线程在数据库中插入行/选择行是一个好习惯,还是我应该分派(dispatch)一个异步队列来执行此操作?在这种情况下..实现这一目标的正确做法是什么? 谢谢! 最佳答案 因为这被标记为 fmdb
我想开始使用 FMDatabaseQueue 在我的应用程序中的不同线程中同时运行查询,但我不确定如何在一个方法中实现读取操作。我正在使用此处的示例:http://ccgus.github.io/fm
您好,我正在使用 sqlite 和 FMDB 开发一个项目。一切正常。但是如果我删除旧数据库并添加一个新数据库,iphone 将无法识别有一个新数据库。它仍然适用于旧数据库。 如果我从模拟器中删除应用
我正在从数据库中获取大量数据。这是我正在做的事情的一个例子。 NSMutableArray *array = [[NSMutableArray alloc] init]; FMResultSet *s
这可能吗?如果可能的话,人们会怎么做?考虑到 Google 和 Stack 搜索,关于该主题的信息有点稀疏,批量插入有很多,但批量更新没有可靠信息。 最佳答案 是的,如果您插入正确的 SQL 是可能的
我在使用 fmdb 执行更新查询时遇到问题。它会在没有任何错误的情况下锁定应用程序。 它停在这一行: [db executeUpdate:@"UPDATE categories SET number_
您好,我正在尝试对数据库中的现有行执行更新。我一直在我的 sql 语句中使用问号 ? 并为 FMDB 提供一个值数组来替换 ?。以下是使用此逻辑的示例 INSERT 语句: let sqlStatem
SQL FMDB 的修饰符在哪里描述?特别是,如何在要插入的字符串中放置引号。比如我想将名称“Mac's Place”插入数据库?谢谢 最佳答案 如果在 SQL 中使用 executeUpdate 和
在 FMDB 中,next 函数(如 if a!.next {})既检查是否有另一行,也检查是否有另一行,我们可以单独做这些事情吗,比如只检查是否有另一行? 我已经阅读了文档,但似乎没有这种直接的方法
我想对 FMDB 是否成功创建表进行单元测试。 db.createGoodTable("good") XCTAssertTrue(db.tableExists("good")!) 我不能通过考试。错误
在我的 ios 应用程序中,我使用 FMDB 连接到 sqlite3 数据库。在app中,多线程会用到db,所以我创建了一个单例: + (id)instance { static DBManager
我正在使用 FMDB,当我想返回一些值时我正在使用 FMDatabase,当我不需要时我正在使用 FMDatabaseQueue返回任何值。当我添加到数据库并使用 FMDatabaseQueue 我没
我在我的应用程序中使用多线程环境,我需要不断访问 sqlite 数据库以更新我的 View ,并通过多个后台线程使用服务器数据更新我的数据库。现在我正在使用 FMDB 进行数据库交互,但仍然遇到数据库
在我的项目中,我使用 cocoapods 添加了 FMDB。然后我为 FMDB 创建了一个桥接头。但是,当我使用 #import "FMDB.h" 导入 FMDB.h 时,我收到错误消息“找不到 FM
我是一名优秀的程序员,十分优秀!