sqlpp11

C++ 安全 SQL 模版库
授权协议 BSD
开发语言 C/C++
所属分类 数据库相关、 数据库调整和优化
软件类型 开源软件
地区 不详
投 递 者 施德元
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

sqlpp11 是 C++ 的类型安全 SQL 模版库。

sqlpp11 是一个嵌入式领域特定语言(EDSL)的代表模版库:

  • 为表和列定义类型

  • 在编译的时候检查结构类型安全查询(语法错误,类型错误,命名错误,甚至是一些语义错误)

  • 通过迭代 query-specific 结构得到解析结果

示例

CREATE TABLE foo (
    id bigint,
    name varchar(50),
    hasFun bool
);

假设有个数据库连接对象:

TabFoo foo;
Db db(/* some arguments*/);
// selecting zero or more results, iterating over the results
for (const auto& row : db(select(foo.name, foo.hasFun).from(foo).where(foo.id > 17 and foo.name.like("%bar%"))))
{
    if (row.name.is_null())
        std::cerr << "name is null, will convert to empty string" << std::endl;
    std::string name = row.name;   // string-like fields are implicitly convertible to string
    bool hasFun = row.hasFun;          // bool fields are implicitly convertible to bool
}
// selecting ALL columns of a table
for (const auto& row : db(select(all_of(foo)).from(foo).where(foo.hasFun or foo.name == "joker")))
{
    int64_t id = row.id; // numeric fields are implicitly convertible to numeric c++ types
}
// selecting zero or one row, showing off with an alias:
SQLPP_ALIAS_PROVIDER(cheese);
if (const auto& row = db(select(foo.name.as(cheese)).from(foo).where(foo.id == 17)))
{
    std::cerr << "found: " << row.cheese << std::endl;
}
// selecting a single row with a single result:
return db(select(count(foo.id)).from(foo).where(true)).front().count;
Of course there are joins and subqueries, more functions, order_by, group_by etc.
These will be documented soon.
// A sample insert
db(insert_into(foo).set(foo.id = 17, foo.name = "bar", foo.hasFun = true));
// A sample update
db(update(foo).set(foo.hasFun = not foo.hasFun).where(foo.name != "nobody"));
// A sample delete
db(remove_from(foo).where(not foo.hasFun));
  • 欢迎技术交流和帮助,提供IT相关服务,如果有需要,请联系博主QQ: 503587937 项目里面目前还是是用手写的SQL语句,很麻烦,也很容易出问题,很早以前就想过使用C++的ORM框架,当时一直没找到合适的,一直就搁置着。如果没找到合适的框架,就会自己手撸一个了。 今天突然发现了一个挺好用的C++ ORM框架,SQLPP11,比我当时的想法还好,比如查询语句,当时我的想法是 select(tab

  •   虽然版本老,但是核心功能一直ok! sqlprettyprint.rar

  • set serveroutput on ora-06530:access_into_null 对象没有初始化 ora-06592:case_not_found case语句没有匹配条件 rao-06531:collection_is_null 没有初始化集合元素 ora-06511:cursor_already_open 重复打开游标 ora-00001:dup_val_on_index 唯一索引

  • 想要把数据库链接的开源库放入自己的工程里,需要将该库与可执行目标文件进行链接: target_link_libraries{《your execute name》sqlpp11-connector-sqlite3}

 相关资料
  • SQL Server sa 登录名是服务器级的主体。默认情况下,它是在安装时创建的。在 SQL Server 2005 或以上,sa 的默认数据库为 master。这是对早期版本的 SQL Server 的行为的改变。 创建数据库时,数据库默认包含 guest 用户。授予 guest 用户的权限由在数据库中没有用户帐号的用户继承。不能删除 guest 用户,但可通过撤消该用户的 CONNECT 权

  • 为了安全地运行CGI等程序,Ruby设置了安全结构。 Ruby的安全模型由“对象的污染”和“安全级别”构成。 对象的污染 Ruby有时会认为对象“遭到了污染”,这主要有两种用途。 第一,以不安全的输入为基础制成的对象就是“受污染”的对象,不能用作“危险操作”的参数。这主要是为了防止恶意数据导致程序作出一些意外的危险动作。 第二,可以使安全对象(未遭污染的对象)得到保护,免遭不安全对象的威胁。若安全

  • 8.5. 安全模式 PHP的safe_mode选项的目的是为了解决本章所述的某些问题。但是,在PHP层面上去解决这类问题从架构上来看是不正确的,正如PHP手册所述(http://php.net/features.safe-mode)。 当安全模式生效时,PHP会对正在执行的脚本所读取(或所操作)文件的属主进行检查,以保证与该脚本的属主是相同的。虽然这样确实可以防范本章中的很多例子,但它不会影响其它

  • 本文向大家介绍SQL Server 2012 安全概述,包括了SQL Server 2012 安全概述的使用技巧和注意事项,需要的朋友参考一下 在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切。但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念。这篇文章提供了基础,因此你可以对SQL Server里的安全功能充分利用,不用在面对特定威胁,不能保

  • 注入技术包括使用应用程序的输入字段注入SQL查询或命令。 Web应用程序SQL注入 成功的SQL注入可以读取,修改数据库中的敏感数据,还可以从数据库中删除数据。它还使黑客能够对数据库执行管理操作,例如:关闭DBMS/删除数据库。 我们通过下面一个简单的图表了解这个漏洞的威胁代理,攻击向量,安全弱点,技术影响和业务影响。 威胁代理 - 匿名外部攻击者以及拥有自己帐户的用户可能会尝试从其他人那里窃取帐

  • YAML模式被定义为一组标签的组合,并包括用于解析非特定标签的机制。 YAML中的故障安全模式以这样的方式创建,即它可以与任何YAML文档一起使用。 它也被视为通用YAML文档的推荐架构。 类型 故障安全模式有两种类型:通用映射和通用序列。 通用映射 它代表一个关联容器。 这里,每个键在关联中是唯一的,并且映射到恰好一个值。 YAML对键定义没有任何限制。 下面给出了表示通用映射的示例 - JSO

  • 本文向大家介绍枚举单例 线程安全-Java版相关面试题,主要包含被问及枚举单例 线程安全-Java版时的应答技巧和注意事项,需要的朋友参考一下 用枚举写单例实在太简单了!这也是它最大的优点。下面这段代码就是声明枚举实例的通常做法。 我们可以通过EasySingleton.INSTANCE来访问实例,这比调用getInstance()方法简单多了。创建枚举默认就是线程安全的,所以不需要担心doubl