在我的iphone應用程序(SDK 6.1)中使用FMDB。我有3 DB使用FMDB在這個應用程序中工作 。我添加了另一個DB文件到同一個應用程序。 這個也應該返回 的結果,但實際上它只是返回0的結果。如果我在unix提示符下使用sqlite3 並複製我的查詢(select * from tablename),我看到 結果。FMDB在應用程序中返回0結果
有人看到這段代碼有什麼問題嗎? 我開啓了錯誤檢查功能,並在運行代碼時沒有發生錯誤。 我試着刪除應用程序,然後在模擬器和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])
{
['changes'](http://ccgus.github.io/fmdb/html/Classes/FMDatabase.html#//api/name/changes)方法調用['sqlite3_changes'](http:/ /www.sqlite.org/c3ref/changes.html)函數,它僅與更新/插入/刪除查詢有關。正如fattomhk指出的那樣,你應該簡單地繼續返回值。跟蹤迭代while循環時返回的記錄數,並將'if(count == 0)'邏輯移至'while'循環之後。 – Rob