1

データベースからデータを選択する際に問題が発生しました。次のクエリでデータベースに「フォルダーテーブル」を作成しました

CREATE TABLE foldertable(fid integer primary key autoincrement,foldername text);

そして、ここに fid(folderid) に従ってフォルダー名を取得する私のコードがあります

-(NSString *)getFolderFromDatabase:(int)folderId
{
        NSString * retriveFolderName;

        UIApplication * application=[UIApplication sharedApplication];
        ScrapMemoAppDelegate * appDelegate=application.delegate;
        NSString * destinationPath=[appDelegate getDestinationPath];
        sqlite3 * database;
        int retriveWhere=folderId;

        if(sqlite3_open([destinationPath UTF8String], &database)==SQLITE_OK)
        { 
            const char * query="select foldername from foldertable where fid = ?;";
            sqlite3_stmt * statement;
            if(sqlite3_prepare_v2(database, query, -1, &statement, NULL)==SQLITE_OK)
            {
                if (sqlite3_step(statement)==SQLITE_DONE)
                {
                    sqlite3_bind_int(statement, 1, retriveWhere);
                    retriveFolderName=[NSString stringWithCString:sqlite3_column_text(statement,0) encoding:NSASCIIStringEncoding];

                }
                else 
                {
                    NSLog(@"Error %s",sqlite3_errmsg(database));
                }

                sqlite3_reset(statement);
            }
            sqlite3_close(database);
        }
        return retriveFolderName;
}

しかし、ターミナルで同じクエリを発行しているときにnullのフォルダ名を取得すると、適切な名前が付けられます。解決策を提供してください。

4

1 に答える 1

1

コードを見ると、主な問題は、クエリを実行(ステップ)してから、の値をバインドしようとすることですfid。最初にバインドを行う必要があります。

于 2012-10-30T05:33:16.687 に答える