#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 );
}
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 );
}