У меня несколько запросов к базе данных sql.Я создал объект для хранения информации о моем соединении
ConObj() {
//create connection
driver = get_driver_instance();
con = driver->connect(server_adress,USER_ID,passphrase);
con->setSchema(dbName);
stmt = con->createStatement();
}
первый вызов
res = -> executeQuery(SQLQUERY);
работает нормально, а циклы в такой функции как
for(std::string elem: queries){
res = -> executeQuery(SQLQUERY);
doSomething(res);
}
работают нормальнотакже.Но когда я вызываю новую функцию, которая создает новую функцию с другим допустимым оператором sql (который работает, если я ее сначала вызываю), я получаю следующее исключение:
ConObj obj;
obj.makeFirstRequests();
doSomething();
obj.makeSecondRequest();
прекращение вызова после броскаэкземпляр 'sql :: SQLException'
what (): команды не синхронизированы;Вы не можете запустить эту команду сейчас
код работает также, когда я устанавливаю соединение в каждой функции с
con = driver->connect(server_adress,USER_ID,passphrase);
con->setSchema(dbName);
stmt = con->createStatement();
, но из-за соображений производительности и большей комфортности яхочу сделать, удержал соединение открытым и просто сделать новый запрос.Есть ли способ сделать это или я должен инициализировать его в каждой новой функции?И я не понимаю, почему я должен делать это в новой функции, но не в цикле.(может быть, между звонками слишком много времени?)
спасибо за ваше время.