我在我的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])
{
答案 0 :(得分:0)
我认为NSUInteger count = [database changes];
不适用于选择查询。
如果阻止,请尝试跳过它。
您可以包含FMDatabaseAdditions.h标头文件以使用intForQuery:
。