R. *_*ewi 4 sqlite while-loop ipad
大家好我在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);
}
Run Code Online (Sandbox Code Playgroud)
}
当我的nslog值,sqlite3_step(语句)总是显示101和sqlite_row总是显示100.为什么会发生?请问有人可以帮助我吗?
谢谢
问候
-risma-
正如你所提到的,sqlite3_step(语句)总是显示101,这意味着sqlite3_step已经完成执行,因此这意味着你的sql查询没有从数据库返回任何行.我建议您首先检查数据库中是否存在REMOTE_SETTING表中存在的任何记录,表示您正在引用的remote_settingid.
为了您的参考,我从sqlite.org获取了以下常量片段
#define SQLITE_DONE 101 /* sqlite_step() has finished executing */
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19394 次 |
| 最近记录: |