gpt4 book ai didi

ipad - while(sqlite3_step(statement) == SQLITE_ROW) 循环从不执行

转载 作者:IT王子 更新时间:2023-10-29 06:31:43 26 4
gpt4 key购买 nike

大家好我在 IOS 中使用 sqlite 时遇到一些问题。我从数据库中选择了数据,然后我想将该数据保存在一个变量中。但是当我使用 while(sqlite3_step(statement) == SQLITE_ROW) 循环时,代码永远不会执行。

这是我的代码:

-(void)retrieveProjectNameFromDb:(NSString *)segmenId{
NSString *query;
NSString *nameProjectStr;

NSString *dbPath = [[NSBundle mainBundle] pathForResource:@"database" ofType:@"sqlite"];
if (sqlite3_open([dbPath UTF8String], &db) != SQLITE_OK) {
sqlite3_close(db);
NSAssert(0, @"Database failed to open.");

}else {
query = [NSString stringWithFormat:@"SELECT remote_projectname, remote_base_uri FROM REMOTE_SETTING WHERE remote_settingid = '%@' ORDER BY remote_projectname", segmenId];
NSLog(@"query : %@", query);
}

sqlite3_stmt *statement;


if(sqlite3_prepare_v2(db, [query UTF8String], -1, &statement, nil)==SQLITE_OK){

NSLog(@"sqlite row : %d", SQLITE_ROW);
NSLog(@"sqlite 3 : %d", sqlite3_step(statement));

while (sqlite3_step(statement) == SQLITE_ROW) {


char *nameProject = (char *)sqlite3_column_text(statement, 0);
if (nameProject == nil) {
NSLog(@"UNNAMED");
}else {
NSLog(@"else");

nameProjectStr = [NSString stringWithUTF8String:nameProject];
}

projectName.text = nameProjectStr;
nameProject = nil;
}

NSLog(@"project name : %@", projectName.text);


sqlite3_close(db);

}

当我 nslog 值时,sqlite3_step(statement) 总是显示 101 而 sqlite_row 总是显示 100。为什么它会发生??有人可以帮帮我吗?

谢谢

问候

-瑞斯玛-

最佳答案

正如您提到的 sqlite3_step(statement) 始终显示 101,这意味着 sqlite3_step 已完成执行,因此这意味着您的 sql 查询未从数据库返回任何行。如果表 REMOTE_SETTING 中存在您所引用的 remote_settingid 的任何记录,我建议您首先检查数据库。

为了您的引用,我从 sqlite.org 中获取了以下不变的片段

#define SQLITE_DONE        101  /* sqlite_step() has finished executing */

关于ipad - while(sqlite3_step(statement) == SQLITE_ROW) 循环从不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4872850/

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