One thing I note is that you have no parameters in your queries, so you
don't need to use sqlite3_bind_text.

Further, you might want to add "else" statements so you can print out
the errmsg if the prepare or step calls are failing.

David


On Wed, 2007-09-05 at 16:35 +0200, "Severin Müller" wrote:
> Hey
> 
> 
> This is correct. This database is just for the users, who send commands to 
> nickserv. every nickname online is a entry in the database. i plan to change 
> that later, in case, sqlite encouters problems with 1000 tables in a 
> database, but for now it really like this. 
> 
> 
> -------- Original-Nachricht --------
> > Datum: Wed, 05 Sep 2007 16:28:19 +0200
> > Von: "Daniel Önnerby" <[EMAIL PROTECTED]>
> > An: sqlite-users@sqlite.org
> > Betreff: Re: [sqlite] Re: Re: C/C++ API
> 
> > Your SQL-strings seem a little strange. You are trying to select from a 
> > table named as the content of nick, this would assume that you have a 
> > table for each "nick" witch seems unlikely. How is your database modeled?
> > 
> > Severin Müller wrote:
> > > Hey
> > >
> > > Sorry for my unclearness. I want to access information in a sqlite
> > database and store it in a std::string or const char*, so i can return it 
> > to the
> > callin function. I have the following code:
> > >
> > > std::string get_user_info(const char* nick,int mode)
> > > {
> > > #ifdef _WIN32 
> > >   const char *filename = "db\\users.db";
> > > #else
> > >   const char *filename = "db/users.db";
> > > #endif
> > >   services serv;
> > >   Config conf;
> > >   sqlite3 *db;
> > >   char *zErrMsg = 0;
> > >   int rc;
> > >   char *sql = (char*) malloc(sizeof(char)*64);
> > >   rc = sqlite3_open(filename,&db);
> > >   if(rc!=SQLITE_OK)
> > >   {
> > >           std::cout << "S_ERR_USERDATABASE" << std::endl;
> > >           globops(conf.get_s_name(),S_MSG_SRVGOINGDOWN);
> > >           sqlite3_close(db);
> > >           return NULL;
> > >   }
> > >   const unsigned char *userinfo = (unsigned char*) malloc(sizeof(unsigned
> > char)*1024);
> > >   std::string sUsername;
> > >   sqlite3_stmt *oStmt;
> > >   switch(mode)
> > >   {
> > >   case 1:
> > >           sprintf(sql,"SELECT username FROM '%s';",nick);
> > >   case 2:
> > >           sprintf(sql,"SELECT hostname FROM '%s';",nick);
> > >   case 3:
> > >           sprintf(sql,"SELECT realname FROM '%s';",nick);
> > >   case 4:
> > >           sprintf(sql,"SELECT operline FROM '%s';",nick);
> > >   }
> > >   if(sqlite3_prepare(db,sql,-1,&oStmt,NULL)==SQLITE_OK )
> > >   {
> > >           sqlite3_bind_text(oStmt,1,nick,-1,SQLITE_STATIC);
> > >           if(sqlite3_step(oStmt)==SQLITE_ROW)
> > >           {
> > >                   sUsername.assign((const char*) 
> > > sqlite3_column_text(oStmt,0));
> > >             
> > >           }
> > >   }
> > >   std::cout << sUsername << std::endl;
> > >   sqlite3_reset(oStmt);
> > >   sqlite3_finalize(oStmt);
> > >   return sUsername;
> > > }
> > >
> > >
> > > So The std::cout << sUsername << sts::endl; is supposed to put the data
> > out there from case 1 (i'm calling case 1 only)
> > >
> > > But it just puts out a blank line... Do you have a suggestion? Thanks a
> > lot...
> > >   



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

Reply via email to