Поддерживают ли библиотеки Poco С++ транзакции сервера sql?

Я использую библиотеки poco C++ версии 1.4.6p1, все, что я использую для выполнения некоторых транзакций в sql server 2012, но транзакции не работают, но работает для mysql. Нужно ли делать какие-либо дополнительные улучшения для поддержки транзакций?


person Charzhard    schedule 12.09.2013    source источник
comment
Это может быть проблема с вашим sql-сервером. Poco просто отправляет ему SQL-запросы.   -  person Basile Starynkevitch    schedule 12.09.2013
comment
@ Basile Starynkevitch Я отлаживал библиотеку poco, похоже, что библиотека poco odbc не поддерживает транзакции   -  person Charzhard    schedule 16.09.2013


Ответы (2)


Я отлаживал библиотеку poco, в классе poco->ODBC->SessionImpl функция начала, которая отмечает начало транзакции, не имеет реализации, где, как и в классе poco->MySQL->SessionImpl, функция начала имеет реализацию, поэтому транзакция работает для MySQL не для SQL Server

person Charzhard    schedule 16.09.2013
comment
Я настоятельно рекомендую вам сообщить об ошибке (и, если возможно, предоставить свой патч) сообществу и веб-сайту Poco. - person Basile Starynkevitch; 16.09.2013

Начиная с Poco 1.7.x (последняя на момент написания) поддерживает транзакции. Только вы должны включить его явно. Вот пример:

//setup your session skipped
session.setFeature("autoCommit", false);
Poco::Data::Transaction transaction(session);
std::vector<std::string> sqlList;
sqlList.push_back("DELETE FROM Table WHERE cond1='condition1'");
sqlList.push_back("DELETE FROM Table WHERE cond2='condition2'");
sqlList.push_back("DELETE FROM Table WHERE cond3='condition3'");

transaction.execute(sqlList);
transaction.commit();
person Stefano Mtangoo    schedule 03.09.2017