Callbacks are deprecated and harder to use in C++.

try something like this:

        sqlite3*   db;
        sqlite3_stmt *pStmt;
        int        rc;
        bool   Loop;
        char*  p;
        int    i;

        // Get configuration information for this website instance
        string sql = "create table contacts"
                 "( ContactName text, ContactMail text, Description text )"
              ;

        // connect to database
        rc = sqlite3_open( argv[1], &db );
        if ( rc )
          throw "Can't open database";

        if ( sqlite3_prepare( db, sql.c_str(), sql.size(), &pStmt,
NULL ) != SQLITE_OK )
          throw "Cannot prepare sql";

        Loop = true;
        for ( i = 0; ( i < 10 ) && ( Loop ); i++ )
          switch ( sqlite3_step( pStmt ) )
            {
              // if database busy wait for a short time
              // to see if it becomes available
              case SQLITE_BUSY:
              case SQLITE_LOCKED:
                break;
              case SQLITE_ROW:
                p = (char *) sqlite3_column_text( pStmt, 0 );
                // note replacement of null results with blank here:
                ContactName  = string( p ? p : "" );

                p = (char *) sqlite3_column_text( pStmt, 1 );
                ContactMail  = string( p ? p : "" );

                p = (char *) sqlite3_column_text( pStmt, 2 );
                Description  = string( p ? p : "" );

                break;
              case SQLITE_DONE:
                Loop = false;
                break;
              default:
                string str = "Cannot execute sql: " + sql + ", Error:
" + sqlite3_errmsg(db);
                throw str.c_str();
                break;
            }

        // clean up when finished
        sqlite3_finalize( pStmt );

        sqlite3_close( db );



On 4/16/05, Kiel W. <[EMAIL PROTECTED]> wrote:
> I've been trying to create a table programatically though C++ without
> luck.  Here is what I have:
> 
> /*
> *  The function that acts as a wrapper around sqlite3_exec
> */
> inline int SqliteGatekeeper::ExecuteSql( const string sql,
> sqlite3_callback CallBack = 0, void*
> callbackParam = 0)
> {
>         int rc = sqlite3_exec( database, sql.c_str(), CallBack,
> callbackParam, &zErrMsg );
> 
>         return rc;
> }
> 
> /*
> * The line that is calling this function
> */
> std::cout << gatekeeper->ExecuteSql( "CREATE TABLE t1( a INTEGER
> PRIMARY KEY,  b INTEGER);" ) << "\n";
> 
> zErrMsg is a private class variable in the same class as this
> function.  My return value is "21" which significes I'm using the
> library wrong.  I'd appreciate it if someone can point me to what I'm
> doing wrong or a resource that explains creating table this way.
> 
> -- Kiel
> 


-- 
---
You a Gamer? If you're near Kansas City:
Conquest 36
https://events.reddawn.net

The Castles of Dereth Calendar: a tour of the art and architecture of
Asheron's Call
http://www.lulu.com/content/77264

Reply via email to