J'utilise les bibliothèques poco c++ version 1.4.6p1 et je l'utilise pour faire quelques transactions dans sql server 2012 mais les transactions ne fonctionnent pas, mais cela fonctionne pour mysql. Y a-t-il des améliorations supplémentaires à faire pour supporter les transactions ?
Réponses
Trop de publicités?J'ai débogué la bibliothèque poco, dans la classe poco->ODBC->SessionImpl la fonction begin qui marque le début d'une transaction n'a pas d'implémentation, alors que dans la classe poco->MySQL->SessionImpl la fonction begin a une implémentation, c'est pourquoi la transaction fonctionne pour MySQL mais pas pour SQL Server.
Depuis Poco 1.7.x (la dernière version au moment de la rédaction), les transactions sont prises en charge. Seulement vous devez l'activer explicitement. Voici un exemple :
//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();