Sandy,
Thanks for the help. I used string and then kept
char* myfunc2()
{
char* prefix = "insert into sdb
(id,resclass,type,manufacturer,method,ownership,precision,minrange,maxrange,capacity)";
char* str1 = " values (";
char* suffix = ")";
string str;
str += prefix;
...
I filled in the variables here
...
str += suffix;
return(str.c_str());
}
char* query = myfunc2();
then I passed this query to the function we are talking about.
BTW, both query and newquery look exactly same after I print them before
the exec funciton call.
On Tue, 28 Dec 2004, Sandy Ganz wrote:
> The strcmp might be misleading you, depending on the implementation if a
> parameter is actually NULL it can return 0. But the easiest thing would be
> to print the queries right before you call the exec function and see what it
> shows. Also how did you allocate the query value that is passed in?
>
> Sandy
>
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, December 28, 2004 12:43 PM
> To: [email protected]
> Subject: Re: [sqlite] Running out of memory
>
>
>
> Hi All,
>
> To give some more information
>
> void myfunction(char* query)
> {
>
> printf(" Query is: %s \n",query);
>
> char* newquery = "insert into sdb
> (id,resclass,type,manufacturer,method,ownership,precision,minrange,maxrange,
> capacity)
> values (43,'HARDWARE','MONITOR','GE','NA','XYZ',0,0,4,2)"
>
> int cmpval = strcmp(query,newquery);
>
> if (cmpval == 0)
> printf("strings match \n");
> else
> printf("Strings dont match\n")
>
> printf("------------------------------------------\n");
> rc = sqlite3_exec(db,query, NULL, 0, &zErrMsg);
>
> if( rc!=SQLITE_OK )
> {
> fprintf(stderr, "SQL error while registering: %s\n",zErrMsg);
> }
>
> }
>
> Now if I use sqlite3_exec(db,newquery, NULL, 0, &zErrMsg) it works fine.
> But if I use sqlite3_exec(db,query, NULL, 0, &zErrMsg); it gives me the
> unrecognized token "" error.
>
> Eventhough my strcmp function tells me that the two strings match, but
> sql_exec does not think so. I am bit confused as to why the same
> hard-coded string works but not the other one.
>
> Any help on this would be great.
>
> Regards,
> --Sameer.
>
> On Tue, 28 Dec 2004, D. Richard Hipp wrote:
>
> > Roger Binns wrote:
> > > [M]ost software does not play well with running out of memory...
> > >
> >
> > FWIW: If a malloc() ever fails with SQLite, it will return
> > SQLITE_NOMEM. It also sets a flag and will forever after
> > continue to return SQLITE_NOMEM even if you free up a bunch
> > of memory so that malloc() would start working again. There
> > is no way to reset this condition. Once a malloc() fails,
> > the party is over and you might as well shut down the process.
> >
> > If malloc() fails, SQLite might also leak memory. (Ironic,
> > isn't it?)
> >
> > The only guarantees that SQLite makes after a malloc failure
> > is that it will not abort() or panic() or segfault. Basically,
> > it just gives you a chance to shutdown gracefully. This might
> > not sound like much, but as Roger points out, it is a lot
> > more than most other software packages offer.
> >
> >
>
>