gpt4 book ai didi

iphone - SQL 查询给出 NULL 作为结果(预期文本)

转载 作者:行者123 更新时间:2023-11-28 22:55:03 24 4
gpt4 key购买 nike

-(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”

在上面的示例中,我对年份和年份进行了硬编码。

我在 sqlite 管理器中尝试了相同的 sql 查询,我发现显示了所有品牌名称的数据。我还发现 sqlite3_column_type(compileStatement,5) 返回 5 (SQLITE_NULL 5) 但根据我的 Column 类型它应该是 3 (SQLITE_TEXT 3)

有人可以深入了解上述行为吗?

最佳答案

您在 sqlite3_column_text() 中使用了错误的列索引 - 您的查询中不存在第 5 列,请尝试使用 0(参见 SQLite documentation)

关于iphone - SQL 查询给出 NULL 作为结果(预期文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10994717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com