문제

I am implementing parameter queries for sqlite in C++ and I want to have the DatabaseCallback updated when I execute. I know it is possible when your query is a string but is it possible when it is a sqlite3_stmt? Note: sql is my select string

            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);
도움이 되었습니까?

해결책

You are supposed to call sqlite3_step multiple times, and get the values with the sqlite3_column_* functions in each step.

If you really want to have the same behaviour as sqlite3_exec, just copy its implementation.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top