Connector.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. //
  2. // MySQLException.cpp
  3. //
  4. // $Id: //poco/1.4/Data/MySQL/src/Connector.cpp#1 $
  5. //
  6. // Library: Data
  7. // Package: MySQL
  8. // Module: Connector
  9. //
  10. // Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
  11. // and Contributors.
  12. //
  13. // Permission is hereby granted, free of charge, to any person or organization
  14. // obtaining a copy of the software and accompanying documentation covered by
  15. // this license (the "Software") to use, reproduce, display, distribute,
  16. // execute, and transmit the Software, and to prepare derivative works of the
  17. // Software, and to permit third-parties to whom the Software is furnished to
  18. // do so, all subject to the following:
  19. //
  20. // The copyright notices in the Software and this entire statement, including
  21. // the above license grant, this restriction and the following disclaimer,
  22. // must be included in all copies of the Software, in whole or in part, and
  23. // all derivative works of the Software, unless such copies or derivative
  24. // works are solely in the form of machine-executable object code generated by
  25. // a source language processor.
  26. //
  27. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  28. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  29. // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
  30. // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
  31. // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
  32. // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  33. // DEALINGS IN THE SOFTWARE.
  34. //
  35. #include "Poco/Data/MySQL/Connector.h"
  36. #include "Poco/Data/MySQL/SessionImpl.h"
  37. #include "Poco/Data/SessionFactory.h"
  38. #include "Poco/Exception.h"
  39. #include <mysql.h>
  40. const MySQLConnectorRegistrator pocoMySQLConnectorRegistrator;
  41. namespace Poco {
  42. namespace Data {
  43. namespace MySQL {
  44. std::string Connector::KEY(POCO_DATA_MYSQL_CONNECTOR_NAME);
  45. Connector::Connector()
  46. {
  47. }
  48. Connector::~Connector()
  49. {
  50. }
  51. const std::string& Connector::name() const
  52. {
  53. static const std::string n(POCO_DATA_MYSQL_CONNECTOR_NAME);
  54. return n;
  55. }
  56. Poco::AutoPtr<Poco::Data::SessionImpl> Connector::createSession(const std::string& connectionString,
  57. std::size_t timeout)
  58. {
  59. return Poco::AutoPtr<Poco::Data::SessionImpl>(new SessionImpl(connectionString, timeout));
  60. }
  61. void Connector::registerConnector()
  62. {
  63. if (mysql_library_init(0, 0, 0) != 0)
  64. {
  65. throw Exception("mysql_library_init error");
  66. }
  67. Poco::Data::SessionFactory::instance().add(new Connector());
  68. }
  69. void Connector::unregisterConnector()
  70. {
  71. Poco::Data::SessionFactory::instance().remove(POCO_DATA_MYSQL_CONNECTOR_NAME);
  72. mysql_library_end();
  73. }
  74. } } } // namespace Poco::Data::MySQL