紳士淑女、
iOSアプリケーションでFMDBを使用しています。私は255バイトを超える列にいくつかのテキストを持っています。BASEを使用してデータベースファイルを参照すると、列のデータの長さをクエリできます...したがって、データがそこにあり、255より長いことがわかります...
しかし、これらの列からデータを取り出そうとすると、常に正確に255バイトのC文字列が取得され、その理由はまったくわかりません。
これがいくつかのコードです(基本的にはFMDB FMResultSet.mの-(NSString *)stringForColumnIndex:(int)columnIdx {からのもので、すでにそこにあるエラーをトラップできます。
- (NSString*)stringForColumnIndex:(int)columnIdx {
if (sqlite3_column_type([_statement statement], columnIdx) == SQLITE_NULL || (columnIdx < 0)) {
return nil;
}
const char *c = (const char *)sqlite3_column_text([_statement statement], columnIdx);
int xx = strlen(c); //added by me, already here it is only 255 bytes
if (!c) {
// null row.
return nil;
}
return [NSString stringWithUTF8String:c];
}
私は何が欠けていますか?私は標準で提供されているlibsqlite3.dylibを使用していますが、FMDBにはsqlite.hが含まれています。私は今何時間も役に立たないように同様の問題をグーグルしようとしました。