我正在用C ++实现sqlite的参数查询,我想在执行时更新DatabaseCallback。我知道当您的查询为字符串时是可能的,但是当它为sqlite3_stmt时是否可能?
注意:sql是我的选择字符串

            DatabaseCallback* pCallback;
            sqlite3_stmt *stmt;
            const char *pzTest;
            int selectCommand = sqlite3_prepare_v2(database_, sql.c_str(), strlen(sql.c_str()), &stmt, &pzTest);

            if(selectCommand == SQLITE_OK)
            {
                //Add the parameter values
                int parameterPosition = 1;

                if(parameters.size() > 0)
                {
                    size_t count = parameters.size();
                    for(string str : parameters)
                    {
                        int returncode = sqlite3_bind_text(stmt,parameterPosition, str.c_str(), strlen(str.c_str()),SQLITE_TRANSIENT);
                        parameterPosition++;
                    }

                }
            }

            sqlite3_step(stmt);
            sqlite3_finalize(stmt);

最佳答案

您应该多次调用sqlite3_step,并在每个步骤中使用sqlite3_column_*函数获取值。

如果您确实希望具有与sqlite3_exec相同的行为,只需复制its implementation

关于c++ - 执行sqlite3_stmt时使用DatabaseCallback,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20476766/

10-11 15:48