Discussion:
query.execute not working
(too old to reply)
Chuck Haines
2006-01-24 20:05:08 UTC
Permalink
------=_Part_11137_10435584.1138133100978
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hello all,
I'm trying to run the following code:

query =3D conn.query();
ttime =3D time( NULL );
sprintf( dTime, "%d000", ttime );
sql =3D "insert into Survey values ('";
sql +=3D dTime;
sql +=3D "', '";
sql +=3D dTime;
sql +=3D "', 'Information', 'Information')";
query << sql;
query.execute();
cout << "Error: " << query.error() << endl;

However, when I try and go look at the database, the information has not
been inserted into the Survey table. I have already called
conn.connectwith the correct parameters and no exceptions are being
thrown from that.
Any help would be appreciated.

Thanks,
Chuck

--
Chuck Haines
***@gmail.com
http://www.maxslack.com
-------------------------------------------
Tau Kappa Epsilon Fraternity
Fraternity For Life Alumni
-------------------------------------------
AIM: CyberGrex
YIM: CyberGrex_27
ICQ: 3707881
-------------------------------------------
GPG Fingerprint: 303A AB50 4EA9 70ED 2E30 2368 C9CD CCB5 4BD7 0989
GPG Key: http://www.maxslack.com/gpgkey.txt

------=_Part_11137_10435584.1138133100978--
Warren Young
2006-01-25 05:50:46 UTC
Permalink
query = conn.query();
ttime = time( NULL );
sprintf( dTime, "%d000", ttime );
sql = "insert into Survey values ('";
sql += dTime;
sql += "', '";
sql += dTime;
sql += "', 'Information', 'Information')";
query << sql;
*Dude*.... Please read a book that covers C++ idioms. This looks like
it's trying to be Perl or BASIC. I'm not trying to pick on you. It's
just that if you write C++ as though it were some other language, it
will not work very well. Rewriting it into proper C++:

query = conn.query();
snprintf( dTime, sizeof(dTime), "%d000", time(0) );
query << "insert into Survey values (" << mysqlpp::quote <<
dTime << ", " << mysqlpp::quote << dTime <<
", 'Information', 'Information')";
query.execute();

Notice that I changed your sprintf() to snprintf(). sprintf() should
not be used any more; it is a prime candidate for buffer overflow
errors. snprintf() is new in C99, and most compilers offer something
like it, if not exactly like it. (Microsoft prefers _snprintf(), for
instance.) My rewrite assumes that dTime is an array, and not a pointer
to dynamically-allocated memory.

Also, I think you could profit from looking into MySQL++'s SSQLS
feature. It reduces the drudgery in the code above.
cout << "Error: " << query.error() << endl;
Unless I'm missing something, this won't ever give you anything useful.
Any true errors will be signaled with exceptions, totally bypassing
this code.
--
MySQL++ Mailing List
For list archives: http://lists.mysql.com/plusplus
To unsubscribe: http://lists.mysql.com/plusplus?unsub=mysql-***@freebsd.csie.nctu.edu.tw
Chuck Haines
2006-01-25 11:33:01 UTC
Permalink
------=_Part_19528_19779648.1138188762757
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

I had a brain cramp yesterday. I have since figured everything out. I
haven't had to program in C++ for about 6 years and have been thrown into
this project. Also, I can't use SSQL because I'm compiling on QNX and it
doesn't work. So I've got to do it the old fashion way. Also, I've figure
out my other email as well.
Post by Warren Young
Post by Chuck Haines
query =3D conn.query();
ttime =3D time( NULL );
sprintf( dTime, "%d000", ttime );
sql =3D "insert into Survey values ('";
sql +=3D dTime;
sql +=3D "', '";
sql +=3D dTime;
sql +=3D "', 'Information', 'Information')";
query << sql;
*Dude*.... Please read a book that covers C++ idioms. This looks like
it's trying to be Perl or BASIC. I'm not trying to pick on you. It's
just that if you write C++ as though it were some other language, it
query =3D conn.query();
snprintf( dTime, sizeof(dTime), "%d000", time(0) );
query << "insert into Survey values (" << mysqlpp::quote <<
dTime << ", " << mysqlpp::quote << dTime <<
", 'Information', 'Information')";
query.execute();
Notice that I changed your sprintf() to snprintf(). sprintf() should
not be used any more; it is a prime candidate for buffer overflow
errors. snprintf() is new in C99, and most compilers offer something
like it, if not exactly like it. (Microsoft prefers _snprintf(), for
instance.) My rewrite assumes that dTime is an array, and not a pointer
to dynamically-allocated memory.
Also, I think you could profit from looking into MySQL++'s SSQLS
feature. It reduces the drudgery in the code above.
Post by Chuck Haines
cout << "Error: " << query.error() << endl;
Unless I'm missing something, this won't ever give you anything useful.
Any true errors will be signaled with exceptions, totally bypassing
this code.
--
MySQL++ Mailing List
For list archives: http://lists.mysql.com/plusplus
com
--
Chuck Haines
***@gmail.com
http://www.maxslack.com
-------------------------------------------
Tau Kappa Epsilon Fraternity
Fraternity For Life Alumni
-------------------------------------------
AIM: CyberGrex
YIM: CyberGrex_27
ICQ: 3707881
-------------------------------------------
GPG Fingerprint: 303A AB50 4EA9 70ED 2E30 2368 C9CD CCB5 4BD7 0989
GPG Key: http://www.maxslack.com/gpgkey.txt

------=_Part_19528_19779648.1138188762757--

Loading...