gpt4 book ai didi

ios - 在 iOS 应用程序中从 sqlite3 获取没有行

转载 作者:行者123 更新时间:2023-11-28 19:24:21 25 4
gpt4 key购买 nike

以下代码不返回任何行,但是当我在终端的 sqlite3 中运行查询时,我得到了预期的结果。所以我想这里有一些微不足道的错误:

- (void)initializeDatabaseWithFilter:(NSString *)filter
{
NSMutableArray *fristArray = [[NSMutableArray alloc] init];
self.frister = fristArray;
[fristArray release];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Frister.sqlite"];
if (sqlite3_open([path UTF8String], &database) == SQLITE_OK){
// Get primary key for all entries with filter
const char *sql = "SELECT fristKey FROM frister WHERE ? = 1";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) != SQLITE_OK) {
NSAssert1(0,@"Error: Failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
}
sqlite3_bind_text(statement, 1, [filter UTF8String], -1, SQLITE_TRANSIENT);
NSLog(@"%@",filter); // lets me see if the filter column name is passed to the method.
int i = 0; // this is to see if I get some rows in return
while (sqlite3_step(statement) == SQLITE_ROW) {
i++;
int primaryKey = sqlite3_column_int(statement,0);
Frist *td = [[Frist alloc] inithWithOwnerID:primaryKey database:database];

[frister addObject:td];
[td release];
}
NSLog(@"%d",i); // If I get some results, I should get a number here...
sqlite3_finalize(statement);
} else {
sqlite3_close(database);
NSAssert1(0, @"Failed to open database with message '%s'.", sqlite3_errmsg(database));
}
}

我真的很想在这里得到一些帮助:)

最佳答案

我看到你已经接受了一个答案,但我想我在你的 sqlite 调用中看到了问题。

在终端中,我猜你正在做这样的查询:

SELECT fristKey FROM frister WHERE column = 1

但是您的代码没有执行等效查询。它正在执行这样的查询:

SELECT fristKey FROM frister WHERE 'column' = 1

由于字符串“column”永远不会等于 1,因此您的查询不会给出任何结果。您不能将列名绑定(bind)到参数化查询中,只能绑定(bind)文字值。

关于ios - 在 iOS 应用程序中从 sqlite3 获取没有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5371748/

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