Re: [HACKERS] Getting number of tuples affected
Michael Richards <miker@scifair.acadiau.ca>
From: Michael Richards <miker@scifair.acadiau.ca>
To: Vince Vielhaber <vev@michvhf.com>
Cc: pgsql-hackers@postgreSQL.org
Date: 1999-06-30T14:28:43Z
Lists: pgsql-hackers
On Wed, 30 Jun 1999, Vince Vielhaber wrote:
> > I was looking for a function to return the number of tuples an update
> > returned, but couldn't find anything for libpq++. Any ideas?
>
> Added to my list of stuff to do. As to what else you can do, submit
> patches? :)
> > There is no PgDatabase::exec
> Yep. Guess that should be data.Exec(...
Not sure there is an Exec either :)
I've been making a pile of changes to the PgDatabase class. (Actually I
derived it). One such change is a function to quote a string you're going
to use in SQL. I'm not sure if this belongs in the PgDatabase class, but
if you think so, I'll add it before I submit the tuple count patches.
This allows me to do something like:
String updatesql(form("UPDATE users SET lastrequest='now' WHERE
loginid=%s",dbh->quote(_username).chars()));
cout << dbh->ExecTuplesOk(updatesql);
That is actually the call I needed the update count to ensure it worked...
Here is the routine:
// routine to quote any \ or ' chars in the passed string
// this isn't too efficient, but how much data are we really quoting?
String TDatabase::quote(const char *dirty) {
// start with a single quote
String clean("'");
const char *strptr=dirty;
// escape the string if it contains any ' or \ chars
while (*strptr) {
if ((*strptr=='\'') || (*strptr=='\\'))
clean+='\\';
clean+=*(strptr++);
}
// end with a quote
clean+="'";
return clean;
}
-Michael