1 // 2 // MySQLException.cpp 3 // 4 // Library: Data/MySQL 5 // Package: MySQL 6 // Module: Connector 7 // 8 // Copyright (c) 2008, Applied Informatics Software Engineering GmbH. 9 // and Contributors. 10 // 11 // SPDX-License-Identifier: BSL-1.0 12 // 13 14 15 #include "Poco/Data/MySQL/Connector.h" 16 #include "Poco/Data/MySQL/SessionImpl.h" 17 #include "Poco/Data/SessionFactory.h" 18 #include "Poco/Exception.h" 19 #include <mysql.h> 20 21 22 namespace Poco { 23 namespace Data { 24 namespace MySQL { 25 26 27 std::string Connector::KEY("mysql"); 28 29 Connector()30Connector::Connector() 31 { 32 } 33 34 ~Connector()35Connector::~Connector() 36 { 37 } 38 39 name() const40const std::string& Connector::name() const 41 { 42 return KEY; 43 } 44 45 createSession(const std::string & connectionString,std::size_t timeout)46Poco::AutoPtr<Poco::Data::SessionImpl> Connector::createSession(const std::string& connectionString, 47 std::size_t timeout) 48 { 49 return Poco::AutoPtr<Poco::Data::SessionImpl>(new SessionImpl(connectionString, timeout)); 50 } 51 52 registerConnector()53void Connector::registerConnector() 54 { 55 if (mysql_library_init(0, 0, 0) != 0) 56 { 57 throw Exception("mysql_library_init error"); 58 } 59 60 Poco::Data::SessionFactory::instance().add(new Connector()); 61 } 62 63 unregisterConnector()64void Connector::unregisterConnector() 65 { 66 Poco::Data::SessionFactory::instance().remove(KEY); 67 mysql_library_end(); 68 } 69 70 71 } } } // namespace Poco::Data::MySQL 72 73