linux版本中间件

JdbcHelper.h 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #pragma once
  2. #include <iostream>
  3. #include <string>
  4. #include <functional>
  5. #include <mutex>
  6. //#include <mysql_driver.h>
  7. //#include <mysql_connection.h>
  8. #include <cppconn/driver.h>
  9. #include <cppconn/exception.h>
  10. #include <cppconn/resultset.h>
  11. #include <cppconn/statement.h>
  12. #include <cppconn/prepared_statement.h>
  13. class JdbcHelper
  14. {
  15. public:
  16. /** host: tcp://192.168.6.80:23306 自动重连*/
  17. /*JdbcHelper(const std::string& host, const std::string& username, const std::string& passwd, const std::string& database);*/
  18. //JdbcHelper(std::string host, std::string username, std::string passwd, std::string database);
  19. virtual ~JdbcHelper();
  20. bool init(std::string host, std::string username, std::string passwd, std::string database);
  21. /** 连接 */
  22. int jdbc_connect(bool enableSSL);
  23. /** 断开连接 */
  24. int jdbc_close_connect();
  25. bool jdbc_is_connected();
  26. /** 设置是否自动提交事务 */
  27. int jdbc_set_auto_commit(bool auto_commit);
  28. /** 提交事务 */
  29. int jdbc_commit();
  30. /** 创建一个保存点 */
  31. sql::Savepoint* jdbc_save_point(const std::string& name);
  32. /** 回滚到一个保存点 */
  33. int jdbc_rollback_save_point(sql::Savepoint* point);
  34. /** 释放保存点, 必须调用(内存泄漏) */
  35. int jdbc_release_save_point(sql::Savepoint* point);
  36. /** stmt: setXXX(index, data), index是从1开始
  37. 返回值: 受影响的行数 affected_rows , 修改没有发生变化, 会返回0 */
  38. int jdbc_executeUpdate(const std::string& sql,
  39. std::function<void(sql::PreparedStatement* stmt)> prepCallBack,
  40. std::function<void(sql::SQLException &e)> exceptionCallBack);
  41. /** stmt: setXXX(index, data), index是从1开始
  42. 返回值: 0: 成功 */
  43. int jdbc_executeQuery(const std::string& sql,
  44. std::function<void(sql::PreparedStatement* stmt)> prepCallBack,
  45. std::function<void(sql::ResultSet* result)> resultCallBack,
  46. std::function<void(sql::SQLException &e)> exceptionCallBack);
  47. static JdbcHelper* GetInstance() { return &instance; }
  48. protected:
  49. //void printSQLException(sql::SQLException &e);
  50. private:
  51. void printSQLException(sql::SQLException &e, const std::string& sql);
  52. void printSQLMeta(sql::ResultSetMetaData* metaData);
  53. JdbcHelper(){}
  54. JdbcHelper(const JdbcHelper&) = default;
  55. JdbcHelper& operator = (const JdbcHelper&) = default;
  56. private:
  57. std::string host;
  58. std::string username;
  59. std::string passwd;
  60. std::string database;
  61. bool m_enableSSL;
  62. sql::Driver* driver;
  63. sql::Connection* conn;
  64. std::mutex mut;
  65. static JdbcHelper instance;
  66. };