1

私はアプリをデータベースと相互作用させるためにsociを使用しており、現在はMySQLサーバーを使用してテストしています。SOCIを単純なクラスにラップし、クラスのConnectメソッドでsession.open()を呼び出します。

m_session.open(soci::mysql, connString);

次に、デストラクタでcloseメソッドを呼び出します

m_session.close();

しかし、クラスを数回使用すると(このクラスのオブジェクトを作成および破棄する)、sociがMySQLサーバーに接続できず、接続が多すぎるというエラーが発生します。デストラクタでcloseメソッドを呼び出すため、混乱しています。sociが接続を解放する必要があると思います。soci docsをチェックすると、close()以外は何も表示されません。

soci :: sessionに接続を解放させる方法はありますか?

4

2 に答える 2

0

クラスメソッドの1つで未処理の例外があったため、どういうわけかデストラクタが呼び出されていませんでした。クラスを再設計し、その例外も処理しました。今はすべて順調です!

于 2012-06-26T12:26:08.080 に答える
0

soci :: session.close()関数でSOCI:Sessionを閉じることができます

于 2018-09-04T09:25:19.147 に答える