I tried to get error code 21 by using below code snippet. But didn't
get. Skipped sqlite3_reset() for 2 to 10,000 records.
code snippet:
int main()
{
//create db connection and statement
for(int i = 0; i < 10000; ++ i)
{
MyFunc(i, "abc", "def");
}
//finalize m_insert_stmt
//close
return 1;
}
bool MyFunc( const int col1, const char * const col2, const char * const col3)
{
static bool reset_once = false;
bool r = false;
int nr = sqlite3_bind_int( m_insert_stmt, 1, col1 );
if(SQLITE_OK != nr) return r;
nr = sqlite3_bind_text( m_insert_stmt, 2, col2, strlen(col2),
SQLITE_STATIC );
if(SQLITE_OK != nr) return r;
nr = sqlite3_bind_text( m_insert_stmt, 3, col3, strlen( col3
), SQLITE_STATIC );
if(SQLITE_OK != nr) return r;
nr = sqlite3_step( m_insert_stmt );
if(!reset_once)
{
reset_once = true;
sqlite3_reset( m_insert_stmt );
}
return r;
}
On Mon, Mar 31, 2014 at 3:52 PM, d b <[email protected]> wrote:
> >>You might have failed to call sqlite3_reset()
>
> Here is the point. If my application gets any error(other than SQLITE_OK)
> during binding parameters for 11th record, function may return without
> sqlite3_reset. So, subsequent insertions may result same error. Am I right?
>
>
> On Mon, Mar 31, 2014 at 3:33 PM, d b <[email protected]> wrote:
>
>> My application calls sqlite3_finalize() after insertion of 10,000
>> record(loop). Is there any other reason?
>>
>>
>> On Mon, Mar 31, 2014 at 3:23 PM, d b <[email protected]> wrote:
>>
>>> sqlite3_bind_text() returned 21 error. It is throwing for all insertions
>>> once error introduced.
>>>
>>> For ex: Here, Inserted first 10 records successfully. then it was
>>> started throwing error 21 for 11th record on-wards till last record(10,000
>>> record). I was able to insert the records successfully after restart the
>>> application only.
>>>
>>>
>>> On Mon, Mar 31, 2014 at 2:23 PM, d b <[email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>> I am getting sqlite error 21.
>>>>
>>>>
>>>> There is only one sqlite prepared statement for insertion. It's not
>>>> multi threaded app. The below function repeatedly calling for every record
>>>> insertion. This app was running from last 4 days. On third, it was started
>>>> throwing error 21. What could be the reason?
>>>>
>>>> steps from application:
>>>>
>>>> bool stmt::execute(const char* const insertquery, listofinputparams)
>>>> {
>>>>
>>>> insertquery is insert or replace into mystuff(id, name, value)
>>>> values(?,?,?);
>>>>
>>>> bool r = false;
>>>>
>>>> sqlite3_stmt s = find(insertquery);
>>>>
>>>> while(enumerate listofinputparams)
>>>> {
>>>> bind each argument for insert statement s
>>>> }
>>>>
>>>> sqlite3_step(s);
>>>>
>>>> sqlite3_reset(s);
>>>>
>>>> return r;
>>>> }
>>>>
>>>> Thanks,
>>>> a v
>>>>
>>>
>>>
>>
>
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users