有上篇文章已经说了odb的环境编译, 现在直接拿来给的例子进行数据库的增删改查操作测试

1. ODB访问oracle数据库_ 插入操作(insert)

  直接运行上篇编译好的exe文件会出现如下错误

  

错误原因: 已经提示的很清楚了

解决方法: 要告诉程序访问数据库的登录名, 密码, 数据库名, ip地址, 端口号

代码:

只要将auto_ptr<database> db (create_database (argc, argv));

改成:

auto_ptr<odb::database> db( new odb::oracle::database("system", "sa",  "ORCL", "127.0.0.1",1521)); //各种数据库写法都是改

如下图:

执行程序前, 数据库无记录

执行后,数据库信息(我的id从19开始, 因为我在此之前删除了18条记录)

执行插入步骤如下:

  1. auto_ptr<odb::database> db( new odb::oracle::database( "system", "sa",   "ORCL", "127.0.0.1", 1521 ));

    2. person john ("John", "John_Doe", 33);

    3. transaction t (db->begin ());

    4. db->persist (john);

    5.t.commit ();

 2. odb访问oracle数据库操作_查找记录(select)

  A.  无条件查询记录如下

  

B. 条件查询结果如下

  1. auto_ptr<odb::database> db( new odb::oracle::database( "system",  "sa",   "ORCL",  "127.0.0.1", 1521  ));

  2. typedef odb::query<person> query;

   typedef odb::result<person> result;

  3. transaction t (db->begin ());

  4.result r (db->query<person>());//无条件查询

  //result r (db->query<person>(query::last == "Joe_Dirt36"));//条件查询

  5.for (result::iterator i (r.begin ()); i != r.end (); ++i){

    cout << i->first () << " " << i->last () <<" " << i->age() << "!" << endl;}

  6.t.commit ();

3. ODB访问oracle数据库_更新操作(update)

更新前:

更新后:

执行更新操作步骤

  1. auto_ptr<odb::database> db( new odb::oracle::database("system", "sa",  "ORCL", "127.0.0.1",1521  ));

  2. transaction t (db->begin ());

  3. unsigned long  id = 26;

  auto_ptr<person> joe (db->load<person>(id));

  joe->age (joe->age () + 100);

  4. db->update (*joe);

  5. t.commit ();

4. 访问Oracle数据库_删除操作(earse)

删除操作前

删除操作后

删除操作步骤:

  1. auto_ptr<odb::database> db( new odb::oracle::database("system",  "sa", "ORCL",   "127.0.0.1",  1521 ));

  2. transaction t (db->begin ());

  3. unsigned long john_id = 26;

  4. db->erase<person> (john_id);

  5. t.commit ();

Window ODB环境编译: https://www.cnblogs.com/hul201610101100/p/9482311.html

C++版本 ORM 访问数据库之ODB 的oracle Demo测试(二)的更多相关文章

  1. C++版本 ORM 访问数据库之ODB 的Window环境编译(一)

    先简单说说我为什么要编译一个ORM访问数据库的版本, 以前在做C#访问数据库时候, 直接以orm方式访问数据库, 代码写起来简单,  不用写各种复杂的sql语句, 直接有orm框架生成, 后来转到C+ ...

  2. C++ 版本ORM访问数据库之ODB访问oracle的Demo(三)

    ODB的组成部分: 1: 操作系统的ODB编译器 2: odb核心库libodb 3: 各种数据库的相关链接库 使用ODB访问数据需要的库和头文件(不懂, 请看https://www.cnblogs. ...

  3. 用dotnet core搭建web服务器(三)ORM访问数据库

    访问传统sql数据库,大家以前都是用sql语句去查询.这些年流行orm方法 ORM是对象关系映射的简拼,就是用一个对象(class)去表示数据的一行,用对象的成员去表述数据的列 dotnet 官方很早 ...

  4. 【一】ODB - C++ 访问数据库的利器--Hello World On Windows(Version-24)

    本文以MySQL数据库为例,其他数据类似. 官方文档和下载 ODB官方首页    官方开发者说明书(开发教程) 安装下载首页(下载与安装教程Windows/Linux) Windows安装步骤(都是英 ...

  5. [开源] .Net 使用 ORM 访问 达梦数据库

    前言 武汉达梦数据库有限公司成立于2000年,为中国电子信息产业集团(CEC)旗下基础软件企业,专业从事数据库管理系统的研发.销售与服务,同时可为用户提供大数据平台架构咨询.数据技术方案规划.产品部署 ...

  6. Python与数据库[2] -> 关系对象映射/ORM[3] -> sqlalchemy 的声明层 ORM 访问方式

    sqlalchemy的声明层ORM访问方式 sqlalchemy中可以利用声明层进行表格类的建立,并利用ORM对象进行数据库的操作及访问,另一种方式为显式的 ORM 访问方式. 主要的建立步骤包括: ...

  7. Python与数据库[2] -> 关系对象映射/ORM[4] -> sqlalchemy 的显式 ORM 访问方式

    sqlalchemy 的显式 ORM 访问方式 对于sqlalchemy,可以利用一种显式的ORM方式进行访问,这种方式无需依赖声明层,而是显式地进行操作.还有一种访问方式为声明层 ORM 访问方式. ...

  8. VS2017新建MVC+ORM中的LinqDb访问数据库项目

    1.前提概述 ORM对象关系映射(Object-Relational Mapping)是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效果上说,它其实是创建了一个可在编程语言 ...

  9. Spring实战6:利用Spring和JDBC访问数据库

    主要内容 定义Spring的数据访问支持 配置数据库资源 使用Spring提供的JDBC模板 写在前面:经过上一篇文章的学习,我们掌握了如何写web应用的控制器层,不过由于只定义了SpitterRep ...

随机推荐

  1. Knative 应用在阿里云容器服务上的最佳实践

    作者|元毅 阿里云智能事业群高级开发工程师 相信通过前面几个章节的内容,大家对 Knative 有了初步的体感,那么在云原生时代如何在云上玩转 Knative?本篇内容就给你带来了 Knative 应 ...

  2. MySQL优化常见Extra分析——慢查询优化

    数据准备: create table user ( id int primary key, name ), sex ), index(name) )engine=innodb; 数据说明:用户表:id ...

  3. [ICP]手推SVD方法

    该方法源于<Least-Squares Rigid Motion Using SVD>,原文推导十分详细,这里自己也仔细推导了一遍,有些地方加以注释整理. 问题定义 假设我们有两个点云集合 ...

  4. Python - 函数 - 第十四天

    Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...

  5. Java学习——包装类

    Java学习——包装类 摘要:本文主要介绍了Java中常用的包装类和基本类型之间的转换,包装类或基本类型和String之间的转换. 部分内容来自以下博客: https://www.cnblogs.co ...

  6. 浅析java线程和OS线程的关系

    探究java线程和OS线程之间的联系 一.准备工作 1.查看linux创建线程的方法    man pthread_create 根据man的配置可知,pthread_create会创建一个线程,这个 ...

  7. HeadFirst设计模式---观察者

    表达公式 注册者 + 订阅者 = 观察者模式 设计气象站 气象站接口 /** ** 布告板 ** @author lollipop ** @since 2019/11/24 **/ public in ...

  8. python_数据分析_正态分布

    Kolmogorov-Smirnov 与 Shapiro-Wilk 模型正态分布检验 Spss stata R语言正态分布 install.packages("nortest") ...

  9. Win7共享只看到部分文件

    把192.168.70.88这台机器的Android目录做为共享文件夹. 共享端:windows server 用户端:其它pc机安装windows7 或windows 10 在用户端只能看到部分文件 ...

  10. NLP中的预训练语言模型(五)—— ELECTRA

    这是一篇还在双盲审的论文,不过看了之后感觉作者真的是很有创新能力,ELECTRA可以看作是开辟了一条新的预训练的道路,模型不但提高了计算效率,加快模型的收敛速度,而且在参数很小也表现的非常好. 论文: ...