FMDB应该返回0结果

时间:2013-08-02 05:40:28

标签: ios sqlite fmdb

我在我的iphone应用程序中使用FMDB(SDK 6.1)。我有3个DB工作 在这个应用程序中使用FMDB。我在同一个应用程序中添加了另一个DB文件。 这个也应该回归 结果,但实际上它只返回0结果。如果我使用sqlite3 在unix提示符中并复制我的查询(select * from tablename)我明白了 结果

有人发现此代码有什么问题吗? 我也开启了错误检查,并在运行代码时没有出现错误。 香港专业教育学院尝试删除该应用程序,并在模拟器和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])
{

1 个答案:

答案 0 :(得分:0)

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

如果阻止,请尝试跳过它。

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