0

私のiPhoneアプリ(SDK 6.1)でFMDBを使用しています。このアプリで FMDB を使用して 3 つの DB を動作させました。同じアプリに別の DB ファイルを追加しました。これも結果を返すはずですが、実際には 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 に答える