Thanks to all who have contributed to this topic!

Ron Wilson, Senior Engineer, MPR Associates, 518.831.7546

-----Original Message-----
From: Dennis Cote [mailto:[EMAIL PROTECTED] 
Sent: Thursday, November 29, 2007 11:09 PM
To: sqlite-users@sqlite.org
Subject: Re: [sqlite] quickstart

On Nov 29, 2007 12:03 PM, Wilson, Ron <[EMAIL PROTECTED]> wrote:

>
> http://www.sqlite.org/quickstart.html
>
> This page still shows the old callback method for usign
sqlite3_exec().
> I actually haven't used SQlite in quite a long time, but judging from
> recent list topics, this is no longer the preferred method.  So where
do
> I point my friend for using sqlite3_prepare_v2() etc.?  I've seen a
few
> posts (long since deleted from my inbox) that had basic outlines.
Could
> someone please post a basic code snipit for open/query/close using the
> newer interface, i.e. avoiding the callback usage?  Perhaps the
> quickstart guide (above) could use an update as well?
>
>  Ron,
I believe the following code is equivalent to the existing quickstart
code,
but it uses the newer APIs. This simple program will execute arbitrary
SQL
on a database file. If the SQL is a query it will display all the
results
returned.

#include <stdio.h>

#include <sqlite3.h>


int main(int argc, const char *argv[]){

  sqlite3 *db;

  sqlite3_stmt *stmt;

  int rc = 0;

  int col, cols;


  if( argc!=3 ){

    fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);

  }else{

    // open database

    rc = sqlite3_open(argv[1], &db);

    if( rc ){

      fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));

    }else{

      // prepare statement

      rc = sqlite3_prepare_v2(db, argv[2], -1, &stmt, 0);

      if( rc ){

        fprintf(stderr, "SQL error: %d : %s\n", rc, sqlite3_errmsg(db));

      }else{

        cols = sqlite3_column_count(stmt);

        // execute the statement

        do{

          rc = sqlite3_step(stmt);

          switch( rc ){

            case SQLITE_DONE:

              break;

            case SQLITE_ROW:

              // print results for this row

              for( col=0; col<cols; col++){

                const char *txt = (const char*)sqlite3_column_text(stmt,
col);

                printf("%s = %s\n", sqlite3_column_name(stmt, col), txt
?
txt : "NULL");

              }

              break;

            default:

              fprintf(stderr, "Error: %d : %s\n",  rc,
sqlite3_errmsg(db));

              break;

          }

        }while( rc==SQLITE_ROW );

        sqlite3_finalize(stmt);

      }

      sqlite3_close(db);

    }

  }

  return rc!=SQLITE_DONE;

}

HTH
Dennis Cote

-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to