-(NSMutableArray*) fetchMakeNamesYear1:(int) year1 Year2:(int) year2 compileStaement: (sqlite3_stmt*)compiledStatement
{
NSMutableArray *makeNames=[NSMutableArray array];
NSString *selectQuery=[NSString stringWithFormat:@"SELECT DISTINCT Make FROM Inventory WHERE [Year] BETWEEN 2009 AND 2012 AND Make IS NOT NULL ORDER BY Make",year1 ,year2 ];
// if (sqlite3_exec(((StorageManager*)[StorageManager sharedStorageManager]).database, [selectQuery cStringUsingEncoding:NSUTF8StringEncoding], NULL, NULL, NULL) == SQLITE_OK)
// {
//
// }
if(sqlite3_prepare_v2(((StorageManager*)[StorageManager sharedStorageManager]).database, [selectQuery UTF8String] , -1, &compiledStatement, NULL) != SQLITE_OK)
{
return nil;
}
while (sqlite3_step(compiledStatement) == SQLITE_ROW)
{
NSLog(@"return TYpe: %d",sqlite3_column_type(compiledStatement, 5));
if (sqlite3_column_text(compiledStatement, 5)!= NULL)
{
**NSString *makeName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 6)];**
[makeNames addObject:makeName];
}
sqlite3_reset(compiledStatement);
}
[self finalize:compiledStatement];
return makeNames ;
}
sqlite3_column_text(compiledStatement, 5) によって返される値は NULL です。
私のデータベースでは、5 番目の列のデータ型は nvarchar[50] です。
その列名は「Make」です
私のテーブル名は「Inventory」です
上記の例では、to および from year の値をハードコーディングしています。
sqlite manager で同じ sql クエリを試したところ、すべての make 名のデータが表示されていることがわかりました。また、sqlite3_column_type(compileStatement,5) が 5 (SQLITE_NULL 5) を返すこともわかりましたが、私の列の種類によれば、3 (SQLITE_TEXT 3) である必要があります。
誰かが上記の行動についての洞察を与えることができますか?