在c ++中捕获MySQL错误

ton*_*gil 1 c++ exception-handling mysql-error-1062

在C++中,我使用的是mysql.h库,我无法捕获MySQL错误(例如,由于主键冲突而无法插入).

我试过了

#include <mysql.h>
// ...
try{
    res = mysql_perform_query(conn, sqlIn);
} catch (...) {
// ...
}
Run Code Online (Sandbox Code Playgroud)

但它仍然不能避免流产:

MySQL query error : Duplicate entry
Run Code Online (Sandbox Code Playgroud)

我正在使用PuTTy接口运行已编译的c ++程序,并且当程序中止时,它会重现MySQL的错误(无论我是否使用TRY CATCH).
我没有找到任何关于MySQL使用catch语句的特定异常代码的引用.

显然,mysql.h即使使用"一揽子"语法(catch (...)),C++(使用此库)也不会捕获MySQL回调错误.由于这种语法应该捕获所有异常,但在这种情况下不会,我无法理解这里发生的事情.我怎样才能捕获SQL异常?

小智 5

mysql C库不会抛出任何异常; 它只是像大多数其他C库一样,在一个公共位置(如errno)设置错误信息并返回状态.它取决于您的客户端代码,以检查返回并抛出错误/异常.

如果您需要轻松解决问题,请尝试使用mysql ++(AKA mysqlpp).这是我可以保证的软件; 坚如磐石! http://tangentsoft.net/mysql++/