Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sqlite C interface get single value result

Tags:

c

sqlite

When I type into Sqlite

SELECT Count(*) FROM tabl;

it returns a number.

How do I use the C interface to obtain this number after preparing a statement?

like image 521
bendu Avatar asked Jan 16 '23 00:01

bendu


1 Answers

Open the database file, prepare the statement, make steps (i.e., if you have more than one row in results you have to fetch them one by one), extract column values, finalize the statement, close the database.

Something like this:

sqlite3_stmt* stmt = NULL;

sqlite3* local_db = NULL;

sqlite3_open("filename.sqlite", &local_db);

int retval, idx;
char sql[2048];

sprintf(sql, "select Something from Somewhere;");

// execute statement
retval = sqlite3_prepare_v2(local_db, sql, -1, &stmt, 0);

if(retval)
{
    printf("Selecting data from DB Failed (err_code=%d)\n", retval);
    return;
}

// iterate rows
idx = 0;

// for multiple results
while(1)
{
    // fetch a row's status
    retval = sqlite3_step(stmt);

    if(retval == SQLITE_ROW)
    {
        Something =
             (int)sqlite3_column_int(stmt, 0);
             // or other type - sqlite3_column_text etc.
        // ... fetch other columns, if there are any
    }
    else if(retval == SQLITE_DONE)
    {
        break;
    }
    else
    {
        sqlite3_finalize(stmt);
        printf("Some error encountered\n");
        break;
    }
}

sqlite3_finalize(stmt);

sqlite3_close(local_db);

Use this code, look for all the API calls (open, prepare_v2, step, column, finalize).

If this is hard, then at first you should become familiar with C itself.

like image 158
Viktor Latypov Avatar answered Jan 29 '23 07:01

Viktor Latypov