ग्रीटिंग्स के साथ ऑटोरेकनेक्ट विकल्प कैसे सेट करें, मैं mysql कनेक्टर C++ के साथ autoReconnect विकल्प कैसे सेट कर सकता हूं? (mysql c api http://dev.mysql.com/doc/refman/5.0/en/mysql-options.html के साथ नहीं)mysql कनेक्टर C++
उत्तर
मैं इस पुस्तकालय का उपयोगकर्ता नहीं हूं, इसलिए मेरा ज्ञान केवल पिछले 10 मिनट के लायक है, इसलिए कृपया सत्यापित करें।
एक सामान्य नियम के रूप में, पुस्तकालय के विभिन्न विशिष्ट विवरणों के उपयोग के बारे में ऐसी जानकारी का सबसे अच्छा संसाधन अपने यूनिट परीक्षणों को देखने के लिए है। ओएसएस के बारे में सबसे अच्छी बात है।
तो यदि आप MySQL कनेक्टर/सी ++ यूनिट परीक्षणों को देखते हैं जो उनके स्रोत पेड़ पर पाए जा सकते हैं, तो आप नीचे निकालेंगे।
sql::ConnectOptionsMap connection_properties;
...
connection_properties["OPT_RECONNECT"]=true;
try
{
con.reset(driver->connect(connection_properties));
}
catch (sql::SQLException &e)
{
std::cerr << e.what();
}
अधिक जानकारी के लिए, कृपया नीचे करें, ताकि आप स्वयं को देख सकें।
~/tmp$ bzr branch lp:~mysql/mysql-connector-cpp/trunk mysql-connector-cpp
~/tmp$ vi mysql-connector-cpp/test/unit/classes/connection.cpp +170
~/tmp$ vi mysql-connector-cpp/test/unit/classes/connection.h
कि सभी ने कहा करने के बाद जोड़ने में mysql में विकल्प, बहुत सावधानी से इस्तेमाल किया जा के रूप में आप किसी भी सत्र चर रीसेट करना होगा है, आदि आप एक नया कनेक्शन के रूप में एक पुन: कनेक्ट कनेक्शन का इलाज करना होगा। इसे MySQL के विशेष संस्करण के दस्तावेज़ के साथ सत्यापित करना होगा जिसके साथ आप काम कर रहे हैं।
धन्यवाद @CodeMedic, लाइब्रेरी के मेरे संस्करण में con.reset विधि नहीं है, मैं इसे नवीनतम संस्करण के साथ आज़माउंगा। और मैंने con-> setClientOption ("OPT_RECONNECT", "true") को कोई किस्मत के साथ भी कोशिश की :( – xdebug
आपको संदर्भ द्वारा बूलियन मान पास करने की आवश्यकता है। मेरा कोड करता है:
bool myTrue = true;
con->setClientOption("OPT_RECONNECT", &myTrue);
और यह मेरे लिए काम करता है।
एक और पूरी उदाहरण
हैडर
#include <boost/thread.hpp>
#include <boost/shared_ptr.hpp>
#include <mysql_connection.h>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>
std::string host_name = "localhost";
std::string user_name = "user1234";
std::string password = "pw1234";
std::string database_name = "TestingDB";
bool reconnect_state = true;
sql::ConnectOptionsMap connection_properties;
sql::Driver *driver;
boost::shared_ptr <sql::Connection> con;
boost::shared_ptr <sql::Statement> stmt;
boost::shared_ptr <sql::ResultSet> res;
boost::shared_ptr <sql::PreparedStatement> pstmt;
कनेक्ट
driver = get_driver_instance(); // protected
con.reset(driver->connect (host_name, user_name, password)); // connect to mysql
con->setClientOption("OPT_RECONNECT", &reconnect_state);
con->setSchema(database_name);
धागा
std::vector <std::string> database::string_from_sql (std::string query, std::string column_name)
{
std::cout << __FILE__ << "(" << __FUNCTION__ << ":" << __LINE__ << ") | started" << std::endl;
std::vector <std::string> svec;
try
{
driver->threadInit(); // prevents multiple open connections
if (con.get() == NULL)
{
std::cerr << __FILE__ << "(" << __FUNCTION__ << ":" << __LINE__ << ") | connection is not open" << std::endl;
throw -2;
}
stmt.reset (con->createStatement());
res.reset (stmt->executeQuery (query));
while (res->next())
{
svec.push_back(res->getString (column_name));
}
driver->threadEnd();
}
catch (sql::SQLException &e)
{
std::cerr << __FILE__ << "(" << __FUNCTION__ << ":" << __LINE__ << ") | e.what(): " << e.what() << " (MySQL error code: " << e.getErrorCode() << ", SQLState: " << e.getSQLState() << ")" << std::endl;
throw -1;
}
if (svec.empty())
{
std::cerr << __FILE__ << "(" << __FUNCTION__ << ":" << __LINE__ << ") | return vector size is 0 (Empty set)" << std::endl;
throw -3;
}
std::cout << __FILE__ << "(" << __FUNCTION__ << ":" << __LINE__ << ") | ended" << std::endl;
return svec;
}
- 1. MySql कनेक्टर अजगर
- 2. MySQL कनेक्टर/जे प्रतिस्थापन
- 3. अजगर 3.3 Mysql कनेक्टर
- 4. .NET MySQL कनेक्टर Conflicting DbProviderFactories
- 5. MySQL अंतिम सम्मिलित आईडी, कनेक्टर .net
- 6. क्या MySQL कनेक्टर/जेडीबीसी थ्रेड सुरक्षित है?
- 7. सी # कनेक्टर/नेट
- 8. MySQL 5.5 + .NET कनेक्टर + इकाई फ्रेमवर्क + माइग्रेशन = स्वरूप अपवाद
- 9. mysql C++ क्लाइंट
- 10. विंडोज़ 2010 के लिए माइस्क्ल कनेक्टर/सी ++
- 11. mysql-connector-C++ - 'get_driver_instance' 'sql :: mysql'
- 12. mysql कनेक्टर देखने के लिए schemaspy कैसे प्राप्त करें?
- 13. मैक ओएस एक्स पर MySQL कनेक्टर/सी कैसे स्थापित करें?
- 14. क्या "आधिकारिक" जावाडॉक्स MySQL जेडीबीसी कनेक्टर के लिए उपलब्ध हैं?
- 15. mysql कनेक्टर जावा का उपयोग कर जावा और mysql को कैसे कनेक्ट करें 5.1.12
- 16. आरेख कनेक्टर एल्गोरिदम
- 17. लघु उद्योगों OLEDB कनेक्टर
- 18. कनेक्टर स्वीकृति पैटर्न
- 19. m2e कनेक्टर क्या हैं?
- 20. एसएपी .NET कनेक्टर
- 21. सबवर्सिव कनेक्टर नवीनतम गैनीमेडे अपडेट
- 22. ग्रहण के लिए क्रूसिबल कनेक्टर?
- 23. "एसएपी जावा कनेक्टर" का भविष्य
- 24. कौन सा विध्वंसक कनेक्टर खोज
- 25. क्या मैं ल्यूसीन कनेक्टर फ्रेमवर्क
- 26. C/C++
- 27. सीएस के माध्यम से mysql कनेक्टर का उपयोग करके mysql से कनेक्ट करने के लिए कैसे कनेक्ट करें
- 28. .NET के लिए MySQL कनेक्टर - क्या यह वास्तव में परिपक्व है?
- 29. MySql कनेक्टर/नेट वर्तमान स्रोत (के रूप में फरवरी-17-2012)
- 30. getTimestamp() MySQL जेडीबीसी कनेक्टर में दो बार टाइमज़ोन कनवर्जन करता है?
सी एपीआई में यह सामान्य प्रथा है कि यदि कोई क्वेरी विफल हो जाती है, डेटाबेस को पिंग करने और फिर से क्वेरी को आज़माने के लिए। – chrisaycock
यदि क्वेरी विफल हो जाती है तो मैं फिर से कनेक्ट कर सकता हूं (MySQL सर्वर चला गया है, क्वेरी आदि के दौरान कनेक्शन खो गया है) लेकिन मैं http://dev.mysql.com/doc/refman/5.0/en/connector-j पर उल्लिखित ऑटो रीकनेक्ट सेट करना चाहता हूं -reference-config-properties.html – xdebug