Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Sqlite始终只返回一行_Ios_Sqlite - Fatal编程技术网

Ios Sqlite始终只返回一行

Ios Sqlite始终只返回一行,ios,sqlite,Ios,Sqlite,计数返回3,因为我在列中有3行。但是当我尝试发布名称时,它只返回1行 请看一下我的代码 sqlite3_stmt *statement; const char *dbpath = [_databasePath UTF8String]; if (sqlite3_open(dbpath, &_chatDB) == SQLITE_OK) { NSString *querySQL = [NSString stringWithFormat:

计数返回3,因为我在列中有3行。但是当我尝试发布名称时,它只返回1行

请看一下我的代码

  sqlite3_stmt *statement;
const char *dbpath = [_databasePath UTF8String];
if (sqlite3_open(dbpath, &_chatDB) == SQLITE_OK)
{
    NSString *querySQL = [NSString stringWithFormat:
                          @"SELECT MESSAGE from CHATCOMPLETE"];
    const char *query_stmt = [querySQL UTF8String];
    if (sqlite3_prepare_v2(_chatDB,
                           query_stmt, -1, &statement, NULL) == SQLITE_OK)
    {
         if (sqlite3_step(statement) == SQLITE_ROW)
        {
            NSString *name = [[NSString alloc] initWithUTF8String:
                              (const char *) sqlite3_column_text(statement, 0)];
                           NSLog(@"Name is %@",name);
            }

        }
        else{
            NSLog(@"Not found");
         //   return nil;
        }
        sqlite3_reset(statement);
    }
}

if/else
更改为
while
以单步执行所有行:

while (sqlite3_step(statement) == SQLITE_ROW) {
        NSString *name = [[NSString alloc] initWithUTF8String:
                          (const char *) sqlite3_column_text(statement, 0)];
                       NSLog(@"Name is %@",name);
}
然后您可以处理所有结果


您应该将
sqlite3\u reset
更改为
sqlite3\u finalize
。也不要忘了关闭数据库。

if/else
更改为
,而
则逐步浏览所有行:

while (sqlite3_step(statement) == SQLITE_ROW) {
        NSString *name = [[NSString alloc] initWithUTF8String:
                          (const char *) sqlite3_column_text(statement, 0)];
                       NSLog(@"Name is %@",name);
}
然后您可以处理所有结果


您应该将
sqlite3\u reset
更改为
sqlite3\u finalize
。也不要忘了关闭数据库。

if/else
更改为
,而
则逐步浏览所有行:

while (sqlite3_step(statement) == SQLITE_ROW) {
        NSString *name = [[NSString alloc] initWithUTF8String:
                          (const char *) sqlite3_column_text(statement, 0)];
                       NSLog(@"Name is %@",name);
}
然后您可以处理所有结果


您应该将
sqlite3\u reset
更改为
sqlite3\u finalize
。也不要忘了关闭数据库。

if/else
更改为
,而
则逐步浏览所有行:

while (sqlite3_step(statement) == SQLITE_ROW) {
        NSString *name = [[NSString alloc] initWithUTF8String:
                          (const char *) sqlite3_column_text(statement, 0)];
                       NSLog(@"Name is %@",name);
}
然后您可以处理所有结果


您应该将
sqlite3\u reset
更改为
sqlite3\u finalize
。不要忘了关闭数据库。

非常感谢,这就是问题所在。@rob谢谢你,rob,我做了,但它让我等了7分钟,但再次感谢你。@user1286300我的错!谢谢非常感谢,这就是问题所在。@rob谢谢rob,我做了,但它让我等了7分钟,但再次感谢。@user1286300我的错!谢谢非常感谢,这就是问题所在。@rob谢谢rob,我做了,但它让我等了7分钟,但再次感谢。@user1286300我的错!谢谢非常感谢,这就是问题所在。@rob谢谢rob,我做了,但它让我等了7分钟,但再次感谢。@user1286300我的错!谢谢与您的问题无关,但您希望使用
sqlite3\u finalize
而不是
sqlite3\u reset
sqlite3\u reset
用于重置准备好的语句,这样您就可以将新变量绑定到SQL中的
占位符并再次执行它(这里不是这种情况),而
sqlite3\u finalize
将释放准备语句所消耗的内存。如果
sqlite3\u prepare\u v2
失败,我还建议记录
sqlite3\u errmsg(\u chatDB)
。与您的问题无关,但是您希望使用
sqlite3\u finalize
而不是
sqlite3\u reset
sqlite3\u reset
用于重置准备好的语句,这样您就可以将新变量绑定到SQL中的
占位符并再次执行它(这里不是这种情况),而
sqlite3\u finalize
将释放准备语句所消耗的内存。如果
sqlite3\u prepare\u v2
失败,我还建议记录
sqlite3\u errmsg(\u chatDB)
。与您的问题无关,但是您希望使用
sqlite3\u finalize
而不是
sqlite3\u reset
sqlite3\u reset
用于重置准备好的语句,这样您就可以将新变量绑定到SQL中的
占位符并再次执行它(这里不是这种情况),而
sqlite3\u finalize
将释放准备语句所消耗的内存。如果
sqlite3\u prepare\u v2
失败,我还建议记录
sqlite3\u errmsg(\u chatDB)
。与您的问题无关,但是您希望使用
sqlite3\u finalize
而不是
sqlite3\u reset
sqlite3\u reset
用于重置准备好的语句,这样您就可以将新变量绑定到SQL中的
占位符并再次执行它(这里不是这种情况),而
sqlite3\u finalize
将释放准备语句所消耗的内存。如果
sqlite3\u prepare\u v2
失败,我还建议记录
sqlite3\u errmsg(\u chatDB)