• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

CxxDBC: 基于C++开发的异种数据库跨平台连接中间件.

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

CxxDBC

开源软件地址:

https://gitee.com/cxxjava/CxxDBC

开源软件介绍:

CxxDBC

基于C++开发的异种数据库跨平台连接中间件.

目录

特点

  • 统一接口,支持各类异种数据库的连接访问;

  • c++ client API参考jdbc,简洁易用;

  • c++ client支持数据库连接池;

  • c++ client支持静态链接数据库直连动态加载数据库直连dbproxy代理访问混合访问模式等多种模式;

  • 使用dbproxy代理进行数据库连接模式时,支持黑白名单、SSL安全连接、最大连接数控制、SQL访问记录、(SQL安全审计、读写分离等高级功能持续开发中...);

  • client语言支持列表:

    语言支持情况
    c++支持
    其他TODO
  • 数据库支持列表:

    数据库读、写多结果集批量写存储过程LOB读写参数绑定事务限制
    MySQL支持支持支持支持支持支持支持存储过程仅支持结果集返回
    PostgreSQL支持支持支持支持支持支持支持存储过程仅支持结果集返回
    Oracle支持支持支持支持支持支持支持存储过程仅支持游标返回
    MSSQL支持支持支持支持支持支持支持存储过程仅支持结果集返回,且不支持参数绑定模式
    Sybase支持支持支持支持支持支持支持存储过程仅支持结果集返回,且不支持参数绑定模式
    其他TODOTODOTODOTODOTODOTODOTODO

示例

c++:

#include "Edb.hh"#include "ELog.hh"#define LOG(fmt,...) ESystem::out->println(fmt, ##__VA_ARGS__)#define HOST "127.0.0.1"#define PORT "6633"#define DATABASE "test"#define USERNAME "test"#define PASSWORD "password"static void test_db_execute() {  EConnection conn; //默认使用proxy模式  conn.connect(DATABASE, HOST, atoi(PORT), USERNAME, PASSWORD);  ECommonStatement stmt(&conn);  EResultSet* rs;  //0.  try {  	stmt.setSql("DROP TABLE mysql000").execute();  } catch (...) {  }  stmt.setSql("CREATE TABLE mysql000 ("  			  "id integer NULL,"  			  "name varchar (40) NULL ,"  			  "date date NULL"  			  ") type=InnoDB").execute();  //1.  stmt.setSql("insert into mysql000 values(?,?,?)")  			.bindInt(4)  			.bindString("1")  			.bindString("2017-07-08");  for (int i=0; i<100; i++) {  	stmt.execute();  }  //2.  stmt.setSql("select * from mysql000").execute();  rs = stmt.getResultSet();  EResultSetMetaData* rsm = rs->getMetaData();  LOG(rsm->toString().c_str());  while (rs->next()) {  	for (int i=1; i<=rs->getMetaData()->getColumnCount(); i++) {  		LOG("%s:%s", rs->getMetaData()->getColumnLabel(i).c_str(), rs->isNull(i) ? "is null" : rs->getString(i).c_str());  	}  }  rs->close();  conn.close();}int main(int argc, const char **argv) {  // CxxJDK init.  ESystem::init(argc, argv);  // CxxLog4j init.  ELoggerManager::init("log4e.properties");        try {  	test_db_execute();  }  catch (ESQLException& e) {  	e.printStackTrace();  }  catch (...) {  	printf("catch all...\n");  }    ESystem::exit(0);    return 0;}

更多示例:esql.cppmssql.cppmysql.cpporacle.cpppostgres.cppsybase.cpp

架构

  • 非CxxDBC常见模式:

    arch0

  • CxxDBC模式一:静态链接数据库直连

    arch1

  • CxxDBC模式二:动态加载数据库直连

    arch2

  • CxxDBC模式三:dbproxy代理访问

    arch3

  • CxxDBC模式四:混合访问模式集合模式二模式三的混合模式,图略。​

集成

详见使用指南

依赖

  1. CxxJDK
  2. CxxLog4j
  3. CxxConet

TODO

  1. SQL安全审计;
  2. ...

Support

Email: [email protected]


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap