#include <sqlite3.h>

class prjWxEx01Frm : public wxFrame
private:
    sqlite3 *db;

...
...
...


//----------------------------------------------------------------------------
// prjWxEx01Frm
//----------------------------------------------------------------------------
//Add Custom Events only in the appropriate block.
//Code added in other places will be removed by wxDev-C++
////Event Table Start
BEGIN_EVENT_TABLE(prjWxEx01Frm,wxFrame)
    ////Manual Code Start
    ////Manual Code End
    
    EVT_CLOSE(prjWxEx01Frm::OnClose)
    EVT_ACTIVATE(prjWxEx01Frm::prjWxEx01FrmActivate)
    EVT_BUTTON(ID_WXBTNNEXT,prjWxEx01Frm::WxBtnNextClick)


END_EVENT_TABLE()
////Event Table End


void prjWxEx01Frm::OnClose(wxCloseEvent& event)
{
    sqlite3_close(db);
    Destroy();
}

/*
 * prjWxEx01FrmActivate
 */
void prjWxEx01Frm::prjWxEx01FrmActivate(wxActivateEvent& event)
{
    dbFileName=wxString( "D:/hobby_cpp/x4_sqlite/test.db" );
    int rc = sqlite3_open(dbFileName, &db);
    if( rc )
    {
        wxString str( sqlite3_errmsg(db) );
        wxMessageBox(wxT("Can't open database: ") + str);

        sqlite3_close(db);
    }
}

static int callback(void *pArg, int argc, char **argv, char **azColName){
    StekiResultSet *rset=(StekiResultSet *)pArg;
    
    wxString info;
    for(int i=0;i <argc;i++)
    {
       info.Append(wxString(azColName[i])+wxT("=")+wxT(argv[i])+wxT("\t"));
    }
    rset->add( info );
    
    // return 0 or else the sqlexec will be aborted.
    return 0;
}

/*
 * WxBtnNextClick
 */
void prjWxEx01Frm::WxBtnNextClick(wxCommandEvent& event)
{
    WxMemoMean->SetValue(_T(""));
    
    StekiResultSet *resultSet = new StekiResultSet();
    
    char *zErrMsg = 0;
    wxString strSql("select * from x;");
    int rc = sqlite3_exec( db, strSql, callback, (void *)resultSet, &zErrMsg);
    if( rc!=SQLITE_OK ){
        wxString strErrMsg( zErrMsg );
        wxMessageBox(wxT("SQL error: ") + strErrMsg);
        return;
    }

    appendText( *resultSet->toString() );
    free( resultSet );
    
}

Posted by stekilove
,