最近在做视频的开发,其中视频的设备接入管理服务器、流媒体管理服务器、中心服务器都涉及到了数据库的操作,同时需要兼容大多数版本的数据库,包括mysql、sqlite、oracle。公司原来使用的是ado来进行数据库的开发的, 但是考虑到目前需要兼容linux,目前使用Poco框架封装的数据库模块进行开发。
 
根据项目情况我对soci、litesql、poco这三个框架进行了简单的学习来确定选择那个框架。
 
1.soci
soci是c++数据库访问类库,目前支持MySQL、Oracle、PostgreSQL、SQLite、MS SQL、FireBird。
soci是一个需要自己下载源码后编译的库,编译方法可以参看源码中的doc文件夹下的installation.html文件。编译注意事项可以参看博客http://blog.csdn.net/fengshuiyue/article/details/22164159
下图是installation中截取的一部分编译的内容:
 
 
2.litesql
liteSQL是一个C++数据库持久层框架,支持SQLite3、MySQL、PostgreSQL;
litesql是一个C++的ORM(对象关系映射)操作数据库的框架
 
注:litesql与soci对比
a.
litesql是一个ORM框架。使用上一般是根据给定格式将数据库信息写入xml中,在用litesql提供的工具生成.cpp、.h文件。
soci是用泛型算法为sql访问做了一层封装。需要通过写sql语句来完成数据库操作。
b.
litesql不支持access、sqlserver的,soci支持odbc,所以soci支持ms下的相关的一系列东西。
c.
litesql需要学习成本,同时对于初学者来说不太方便调试
 
根据项目情况,我起初选择了soci,但是soci相关的文档极少,不同版本的soci估计生成动态链接库的方式不太一致,生成动态链接库不是很方便,故放弃了soci
 
3.Poco
其实Poco是一个C++库,类似Boost,但是比Boost封装更完善,在这块儿介绍Poco,是因为最终选定的方案是采用Poco中的数据库操作访问类库(SQLite、Mysql、ODBC)来进行数据库的开发。
Poco的数据库访问类库参照的是soci,但是比Soci有更多的文档去学习,同时生成各种版本的lib文件很简单。
下图是Poco库的概览图,我们操作数据库使用的是下图红框中的Data接口以及MySQL、SQLite、ODBC的模块进行开发。

SOCI、LiteSQL、POCO数据库访问类库对比的更多相关文章

  1. 在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持

    在我们开发很多项目中,数据访问都是必不可少的,有的需要访问Oracle.SQLServer.Mysql这些常规的数据库,也有可能访问SQLite.Access,或者一些我们可能不常用的PostgreS ...

  2. 数据库访问性能优化 Oracle

    特别说明: 1.  本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2.  本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...

  3. C#.NET数据库访问类DBHelper

    这是一个与C# .NET通用的数据库访问类,包含了工厂模式.事务处理等安全机制. 调用方式: DBHelper db = new DBHelper(); DbCommand cmd = db.GetS ...

  4. “Zhuang.Data”轻型数据库访问框架(一)开篇介绍

    目录: “Zhuang.Data”轻型数据库访问框架(一)开篇介绍 “Zhuang.Data”轻型数据库访问框架(二)框架的入口DbAccessor对象 框架介绍 该框架主要用于数据库访问,封装了包括 ...

  5. C#通用数据访问类库

    说明:此篇文章是给那些和我一样仍在使用ADO.NET访问数据库的.NET开发人员写的,因为某些原因,比如还在使用.NET3.0以下版本开发.NET应用或者所使用的数据库对ORM支持不是很好,或者是对O ...

  6. [转]DbHelper通用数据库访问帮助类

    之前我一直都是在博客园中查看各位高手的博文,确实学到了不少知识,不过比较少写博客,现在就把我自己在项目实施过程中使用到比较好的技术框架写出来,希望能让更多的人了解和学习. 通常我们在开发使用数据库访问 ...

  7. 「Django」数据库访问优化

    先做性能分析 - 两个工具 django.db.connection from django.db import connection# contextprint connection.queries ...

  8. 数据库访问辅助类SqlHelper

    程序访问数据库需要进行的操作有创建与某个指定数据库的连接, 然后打开创建好的连接,创建执行指令(也就是sql执行代码), 最后执行指令,关闭创建的连接,释放资源. ado.net是一组用于和数据源进行 ...

  9. C# 数据库访问

    C# 数据库访问 分类: C#学习笔记2011-07-05 11:26 515人阅读 评论(0) 收藏 举报 数据库c#datasettextboxcommandexception   目录(?)[+ ...

随机推荐

  1. 如何让Eclipse的智能提示像VS一样霸气

    说起来用 Eclipse 也有一段时间了,相信每一个用过的人都知道他的智能提示功能真的是糟糕透了,与 VisualStudio2008 简直不是一个档次的!我就纳闷了,他为什么不弄好一点呢!今天我实在 ...

  2. Nodejs 处理gb2312内容乱码问题

    在使用cheerio处理request模块返回的gb2312网页出现了乱码,从开始一直排查问题,一直排查到request.cheerio都有问题. 首先request会进行一次转码,这里需要设置req ...

  3. offset() position() scrollTop() scrollLeft()

    (1)offset:获取当前元素相对于文档的高度.只对可见元素有效. 不管该元素如何定位,也不管其父元素如何定位,都是获取的该元素相对于当前视口的偏移 (2) position:获取元素相对于最近的一 ...

  4. 在Windows下设置环境变量 运行mysql程序变得更容易

    在Windows下设置环境变量,点开始菜单,右键单击我的电脑--属性--高级--环境变量 可以看到PATH的变量是这样的: C:\WINDOWS;C:\WINDOWS\COMMAND   为了让运行m ...

  5. sql server 查看创建视图的sql语句

    --sp_helptext v_viewnamesp_helptext port_dept--效果

  6. Java http post

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  7. PHP的$_SERVER['HTTP_HOST']获取服务器地址功能详解,$_SERVER['HTTP_X_FORWARDED_HOST']

    uchome的index文件中的二级域名功能判断,使用了php的$_SERVER['HTTP_HOST'],开始对这个不是很了解,所以百度了一下,发现一篇帖子有点意思,转发过来做个记录. 在php中, ...

  8. Catalyst揭秘 Day7 SQL转为RDD的具体实现

    Catalyst揭秘 Day7 SQL转为RDD的具体实现 从技术角度,越底层和硬件偶尔越高,可动弹的空间越小,而越高层,可动用的智慧是更多.Catalyst就是个高层的智慧. Catalyst已经逐 ...

  9. 1.JSP 简介及工作原理

    1.JSP 简介 JSP(Java Server Pages)是由Sun Microsystems公司倡导.许多公司参与一起建立的一种动态网页技术标准.JSP技术有点类似ASP技术,它是在传统的网页H ...

  10. AJAX 基础知识

    1.AJAX 是一种用于创建快速动态网页的技术.而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不 ...