Pantek Library
Hosting Provided By
CybrHost
High Speed Hosting

Getting errnum() in exception?

From: Jim Wallace <jwallace(at)kaneva.com>
Date: Thu Sep 20 2007 - 11:47:56 EDT


I want to catch a dupe key error in my code using con.errnum(). I use exceptions for everything and would like to use them, but the errnum() in the catch is always zero. I assume this is because when the BadQuery exception is constructed calls error() which calls mysql_error() but that clears out the errornum() (mysql_errno()). To get the error number, I have to turn off exceptions. Any tricks to get it to work? If not, adding an unsigned int to the BadQuery exception class and having it call errnum() first would fix it, which I'd be willing to do.

Here's a snip that I wanted to work.

...

		query.reset();
		query << "insert into test values (1)"; // one int col,
unique key
		query.execute();
		query.reset();
		query << "insert into test values (1)";
		query.execute();

	}
	catch (const mysqlpp::BadQuery& er) {
		cerr << "Got errnum of " << con.errnum() << endl; ///
<--- always prints zero
...

If I turn off exceptions, con.errnum() returns the correct error number.

		mysqlpp::NoExceptions ne( query );
		query << "insert into test values (1)";
		query.execute();
		unsigned int ret = con.errnum(); <-- get 1062, dupe key
		cerr << con.error() << endl; <-- correct err msg
-- 
MySQL++ Mailing List
For list archives: 
http://lists.mysql.com/plusplus
To unsubscribe:    
http://lists.mysql.com/plusplus?unsub=lists@pantek.com
Received on Thu Sep 20 11:48:30 2007

This archive was generated by hypermail 2.1.8 : Sun Oct 07 2007 - 10:03:17 EDT


Contact Us  Legal Notices  Order Services Online 
Pantek Home  Privacy Policy  IT news  Site Map  Pantek Library