0

我在我的 iphone 应用程序(SDK 6.1)中使用 FMDB。我有 3 个 DB 在这个应用程序中使用 FMDB。我向同一个应用程序添加了另一个数据库文件。这个也应该返回结果,但实际上它只是返回 0 个结果。如果我在 unix 提示符中使用 sqlite3 并复制我的查询(从表名中选择 *),我会看到结果。

有人看到这段代码有什么问题吗?我也打开了错误检查,运行代码时没有错误。我尝试删除该应用程序并在模拟器和 iPhone 上重新安装它并获得相同的结果。

谢谢你的帮助!

FMDatabase *database = [FMDatabase databaseWithPath:file];
database.logsErrors = YES;
if (![database open])
{
    [Log log:TERR :@"ERROR Opening Database <%@>", file];
    return FILE_NOT_FOUND;
}

NSString *selquery = [[[NSString alloc] initWithFormat:@"SELECT * FROM %@",
                       tablename] autorelease];
[Log log:TINFO :@"selquery: %@", selquery];
FMResultSet *results = [database executeQuery:selquery];

NSUInteger count = [database changes];  // how many rows affected apparently
if (!count)
{
    [Log log:TINFO :@"NO RESULTS FOUND, count = %d", count];
    return NO_SQL_RESULTS;
}

if ([database hadError])
{
    NSString *msg = [[[NSString alloc] initWithFormat:@"Database Error <%@> %d: %@", dbname, [database lastErrorCode], [database lastErrorMessage]] autorelease];
    [Log log:TERR :msg];
    [Log log:TSERVLOG :msg];
    return DB_ERROR;
}

SearchItem *item = nil;
while ([results next])
{
4

1 回答 1

0

我认为NSUInteger count = [database changes]; 不适用于选择查询。

尝试跳过该 if 块。

您可以包含要使用的 FMDatabaseAdditions.h 头文件intForQuery:

于 2013-08-02T05:49:59.107 回答