#include <iostream>
#include <sstream>
#include <string>
#include <mysql_connection.h>
#include <mysql_driver.h>
#include <mysql_error.h>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
using namespace std;
using namespace sql;
using namespace mysql;
int main()
{
Connection* con = nullptr;
MySQL_Driver *driver = get_mysql_driver_instance();
const SQLString server = "server.de";
const SQLString user = "userName";
const SQLString password = "password";
while (1)
{
try {
con = driver->connect(server, user, password);
}
catch (SQLException e) {
printf("Fehler SQL Connect: %s \n", e.getSQLStateCStr());
delete driver;
}
catch (...) {
cerr << "Fehler SQL Connnect" << endl;
}
if (con)
{
con->close();
delete con;
}
boost::detail::Sleep(5000);
}
return 0;
}
Я написал этот код и надеялся, что он будет выполняться в бесконечном цикле даже в случае сбоя оператора connect. Происходит следующее: после первого сбоя соединения он переходит к первому оператору catch и пишет «Fehler SQL Connect: HY000», как я и ожидал. В следующий раз, когда соединение завершается с ошибкой, программа разрывается, и в VS2017 я вижу, что «te923021119.exe вызвал точку останова». Почему программа не пытается бесконечно подключаться? НКТ