gpt4 book ai didi

ios - sqlite3_step(statement) == SQLITE_ROW 从未执行

转载 作者:行者123 更新时间:2023-11-28 21:43:41 34 4
gpt4 key购买 nike

我的应用程序中有一个 sqlite,一切似乎都正常,但是我的数据库方法没有执行 while 循环,而且我无法从查询中获得结果。有人可以帮助我吗?任何帮助将不胜感激!

我还为数据库创建了一个副本,正如我在其他问题的其他答案中看到的那样。

- (void)viewDidLoad {
[super viewDidLoad];


int sqlite3_open(const char *filename, sqlite3 **database);

sqlite3 *contactDB; //Declare a pointer to sqlite database structure
NSString *path = [[NSBundle mainBundle] pathForResource:@"verbeGeo" ofType:@"sqlite"];

if (sqlite3_open([path UTF8String], &contactDB) == SQLITE_OK)
{
NSLog(@"DB is open");
} else {
NSLog(@"DB can be open");
}


NSString *querySQL = @"select id from conjugare where rowid=1";
const char *query_stmt = [querySQL UTF8String];

if (sqlite3_prepare_v2(contactDB, query_stmt, -1,
&statement, NULL) == SQLITE_OK)
{
NSLog(@"Statement prepared successfully");
} else {
NSLog(@"Statement preparation failed");

NSLog(@"Error while creating update statement. '%s'", sqlite3_errmsg(contactDB));
NSLog(@"%s Prepare failure '%s' (%1d)", __FUNCTION__, sqlite3_errmsg(contactDB), sqlite3_errcode(contactDB));
}

sqlite3_step(statement);
sqlite3_finalize(statement);
[self database];
}

-(void)database{

sqlite3 *contactDB;
NSString *querySQL = @"select id from conjugare where rowid=1";

const char *query_stmt = [querySQL UTF8String];

sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL);


while (sqlite3_step(statement) == SQLITE_ROW)
{
NSString *idNumber =
[[NSString alloc] initWithUTF8String:
(const char *) sqlite3_column_text(statement, 0)];
}
sqlite3_finalize(statement);

}

最佳答案

您的 sqlite3_open 语句正在初始化 viewDidLoad 中定义的 contactDB 变量。 database 中定义的 contactDB 变量是该方法的本地变量,未初始化。

1) 使 contactDB 成为实例变量或将其传递给 database

2) 检查所有调用的错误返回(例如 database 方法中的 sqlite3_prepare_v2)。

关于ios - sqlite3_step(statement) == SQLITE_ROW 从未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31114242/

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