Hi, ALL,
1. I'm trying to minimize the number of requests I'm doing to the DB. What
I need is a way to count the number of rows that the query return to me
prior to going thru the "sqlite3_step()".
If this number is 0, I want to skip the processing and just return. It's
not an error situation, it just means that there was no new records
inserted with specific constraints.

An example:

if( ( result = sqlite3_prepare_v2( m_handle, "SELECT pplayerid FROM players
WHERE players.isnew=\"1\";", -1, &stmt, 0 ) != SQLITE_OK )
{
// display error message
}
else
{
//////// check the number of rows returned by the query
if( numRows == 0 )
     return;
else
{
sqlite3_step( stmt );
sqlite3_finalize( stmt );
}
}

Is there such a function? There is a "sqlite3_column_count()", but it will
return number of columns in the result set, which I assume will always be 1
in my case (if there is no errors of course).

2. Considering the same code above, if I want to delete this row, I will
need another statement variable. But will it screw up the original select
statement? Something like this:

int playerid;
if( ( result = sqlite3_prepare_v2( m_handle, "SELECT pplayerid FROM players
WHERE players.isnew=\"1\";", -1, &stmt, 0 ) != SQLITE_OK )
{
// display error message
}
else
{
//////// check the number of rows returned by the query
if( numRows == 0 )
     return;
else
{
    while( true )
    {
         sqlite3_step( stmt );
         playerid = sqlite3_column_int( stmt, 0 );
         if( ( result = sqlite3_prepare_v2( m_handle, "DELETE FROM players
WHERE playerid = ?;", -1, &stmt1, 0 ) != SQLITE_OK )
         {
               //error message
         }
         else
         {
              sqlite3_step( stmt1 );     // at this point the outer cursor
will still be good, right?
              sqlite3_finalize( stmt1 );
         }
    }
    sqlite3_finalize( stmt );
}


Thank you.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to