McoSqlSession
McoSqlSession 类用于在多个线程之间共享单个数据库连接。
多线程应用程序可以为每个连接的线程使用其自身的 SQL 引擎(即创建独立的 McoSqlEngine 实例)。但这既不方便也不高效。
在许多情况下,应用程序本身不会启动线程,而是由某些外部组件维护线程池,并且用户代码在其中一个线程的上下文中执行(如 Apache servlets)。McoSqlSession 允许多个线程共享一个 McoMultithreadedSqlEngine 实例。
McoSqlSession 继承了 McoSqlEngine 及其基类 SqlEngine 的所有公共方法。
构造函数通过调用 mco_db_connect()
为线程建立连连接,参数engine是 McoMultithreadedSqlEngine 的共享实例。
McoSqlSession(McoSqlEngine* engine)
析构函数通过调用 mco_db_disconnect()
来释放连接。
~McoSqlSession()
示例
通常,通过调用其 Database 成员的 beginTransaction() 方法来实例化一个 McoSqlSession 对象,以在多线程应用程序中管理事务阻塞。
McoMultithreadedSqlEngine engine;
...
McoSqlSession session(&engine);
Transaction* trans = session->database()->beginTransaction(Transaction::ReadWrite);
session->executeStatement(trans, "update Member set balance=%i where id=%i",
fromBalance, idFrom);
session->executeStatement(trans, "update Member set balance=%i where id=%i",
toBalance, idTo);
trans->commit();
trans->release();