mysqlcppconn之ConnectOptionsMap的使用
生活随笔
收集整理的這篇文章主要介紹了
mysqlcppconn之ConnectOptionsMap的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
由來
繼上一篇文章, 發現之前寫的一篇文章中斷線重連部分是錯誤的, 也是現在翻閱了源碼才知道
想要自動重連, 必須使用ConnectOptionsMap才可以
但由于官方代碼沒有做好導出部分的處理, 直接使用此類型會造成內存異常(跨模塊傳遞STL對象)
所以本人簡單的添加了幾個導出函數, 繞過了這個問題
添加代碼
在connection.h中, 找到
typedef std::map< sql::SQLString, ConnectPropertyVal > ConnectOptionsMap;在下面緊接著添加CPPCONN_PUBLIC_FUNC ConnectOptionsMap* ConnectOptionsMap_New(); CPPCONN_PUBLIC_FUNC void ConnectOptionsMap_Delete(ConnectOptionsMap *obj); CPPCONN_PUBLIC_FUNC void ConnectOptionsMap_Set(ConnectOptionsMap *obj, const char* k, const Variant &v);在mysql_connection.cpp中, 文件最后, sql的命名空間內, 即最后一個花括號內, 添加以下代碼CPPCONN_PUBLIC_FUNC ConnectOptionsMap* ConnectOptionsMap_New() {return new ConnectOptionsMap; }CPPCONN_PUBLIC_FUNC void ConnectOptionsMap_Delete(ConnectOptionsMap *obj){delete obj; }CPPCONN_PUBLIC_FUNC void ConnectOptionsMap_Set(ConnectOptionsMap *obj, const char* k, const Variant &v){(*obj)[k] = v; }編譯, 取出dll和lib文件, 搞定.
如何使用
sql::Connection* CSqlWorker::NewSqlObject() {try{typedef decltype (sql::ConnectOptionsMap_Delete)* TConnectOptionsMap_Deleter;std::unique_ptr<sql::ConnectOptionsMap, TConnectOptionsMap_Deleter> Maps(sql::ConnectOptionsMap_New(), sql::ConnectOptionsMap_Delete);sql::ConnectOptionsMap_Set(Maps.get(), "hostName", sql::Variant(sql::SQLString(m_host.c_str())));sql::ConnectOptionsMap_Set(Maps.get(), "userName", sql::Variant(sql::SQLString(m_user.c_str())));sql::ConnectOptionsMap_Set(Maps.get(), "password", sql::Variant(sql::SQLString(m_pass.c_str())));sql::ConnectOptionsMap_Set(Maps.get(), "OPT_RECONNECT", sql::Variant(true));sql::ConnectOptionsMap_Set(Maps.get(), "OPT_CHARSET_NAME", sql::Variant(sql::SQLString("utf8")));return m_driver->connect(*Maps.get());}catch (sql::SQLException e){_ASSERT(0);}return NULL; }更多參數及作用, 請參閱mysql_connection.cpp的MySQL_Connection::init函數
完結
是不是看起來比較麻煩??
但為了使用擴展功能(動態鏈接情況下), 只好先這樣了
若要避免這個問題, 只能使用靜態連接, 且運行庫一致, 才可以.
來源:?http://www.voidcn.com/blog/Sidyhe/article/p-5724537.html
來自為知筆記(Wiz)
轉載于:https://www.cnblogs.com/jins-note/p/9513566.html
總結
以上是生活随笔為你收集整理的mysqlcppconn之ConnectOptionsMap的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多校1010 Taotao Picks
- 下一篇: extjs序号倒序