Igor I tried your solution and can't get it working . Here is my code. The STRANGE problem that I am having is that when it adds to the vector at position 1, the vector contains the object. But when it adds to vector at position 2 using push_back - for some reason the contents at vector 1 is garbage. then when it adds to vector at position 3 using push_back - for some reason position 3 is garabage ? the errors in this situation doesn't seem to follow much logic ? but it's consistent. for example if i run this code and it uses push 4 times, position 1 and 3 might have garbase while position 2 will have the same contents as position 4 ? ? this is some weird stuff i haven't seen before. I'm wondering if the problem is due to the scope of either my QuestionDBStruct or my vector . ================================================= static int callback2(void *NotUsed, int argc, char **argv, char **azColName) { int i; for(i=0; i<argc; i++) { printf("%i. %s = %s\n", i, azColName[i], argv[i] ? argv[i] : "NULL"); } QuestionDB* q = (QuestionDB*)NotUsed; q->push(atoi(argv[0] ),atoi(argv[1] ),atoi(argv[2] ), argv[3] , argv[4] ); return 0; }; QuestionDB::QuestionDB() { }; void QuestionDB::push(int b, int c, int v, char* q, char* a) { QuestionDBStruct qbs; qbs.bible_book =1; qbs.bible_chapter =2; qbs.bible_verse =3; qbs.bible_answer ="test"; qbs.bible_question =q; printf("\n****** push called ************\n"); vecQuestions.push_back(qbs); for(int x = 0 ; x < vecQuestions.size(); x++) printf("\nvecQuestion[%i] = %s \n", x, ((QuestionDBStruct)vecQuestions[x]).bible_question ); printf("\n*******************************\n"); }; ========================================================
Igor Mironchick <[EMAIL PROTECTED]> wrote: If I understand you right then try it: static int add_value( void *st, int, char **value, char ** ) { storage_t * storage = (storage_t*) st; st->push( value[ 0 ] ); return SQLITE_OK; }; class storage_t { public: storage_t() : m_db( 0 ) { sqlite3_open( "your_database.db", &m_db ); }; virtual ~storage_t() { sqlite3_close( m_db ); }; void push( const std::string & v ) { m_buff.push_back( v ); } void read_table() { sqlite3_exec( m_db, "SELECT * FROM some_table", add_value, this, NULL ); } private: sqlite3 * m_db; std::vector< std::string > m_buff; }; This is very simple example, but it can help you I think. Stephen Sutherland wrote: > Hi > > I am using the 'quick start' C-styled code for sqlite3 > http://www.sqlite.org/quickstart.html > I think I'm running into a problem trying to put it in classes to make it > somewhat object oriented. So I'm asking for help about how to make it > object-oriented - or to confirm whether what I'm doing is object oriented. > Here is the code: > > [code] > //callback function > static int callback(void *NotUsed, int argc, char **argv, char **azColName) > { > int i; > for(i=0; i> printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); > } > printf("\n"); > return 0; > }; > > // this callback is referenced here. > void MyClass::executeSQLStatement() > { > rc = sqlite3_exec(db, "select * from table1" , callback, 0, &zErrMsg); > }; > > [/code] > > > However I am trying to add a vector in the callback function to store the > results. When I put the vector in it seems I am forced to do something like > this: > > > [code] > vector vecX; > > static int callback(void *NotUsed, int argc, char **argv, char **azColName) > { > int i; > for(i=0; i> printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); > } > vecX.push_back(argv[3]); > > printf("\n"); > return 0; > }; > [/code] > Now this doesn't seem object oriented ? > Nor do I understand how I would access this vector from other classes ? > And I don't know how this vector which I created can be considered part of > the class ? it seems to me to only have page scope. > Any advice on how to make my vector object oriented or accessible by other > classes ? > > Thanks in Advance > Stephen > > > --------------------------------- > Pinpoint customers who are looking for what you sell. > -- Regards, Igor Mironchick, Intervale © #ICQ 492-597-570 ----------------------------------------------------------------------------- To unsubscribe, send email to [EMAIL PROTECTED] ----------------------------------------------------------------------------- --------------------------------- Be a better Globetrotter. Get better travel answers from someone who knows. Yahoo! Answers - Check it out.