C++版本 ORM 访问数据库之ODB 的oracle Demo测试(二)
有上篇文章已经说了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条记录)
执行插入步骤如下:
- 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测试(二)的更多相关文章
- C++版本 ORM 访问数据库之ODB 的Window环境编译(一)
先简单说说我为什么要编译一个ORM访问数据库的版本, 以前在做C#访问数据库时候, 直接以orm方式访问数据库, 代码写起来简单, 不用写各种复杂的sql语句, 直接有orm框架生成, 后来转到C+ ...
- C++ 版本ORM访问数据库之ODB访问oracle的Demo(三)
ODB的组成部分: 1: 操作系统的ODB编译器 2: odb核心库libodb 3: 各种数据库的相关链接库 使用ODB访问数据需要的库和头文件(不懂, 请看https://www.cnblogs. ...
- 用dotnet core搭建web服务器(三)ORM访问数据库
访问传统sql数据库,大家以前都是用sql语句去查询.这些年流行orm方法 ORM是对象关系映射的简拼,就是用一个对象(class)去表示数据的一行,用对象的成员去表述数据的列 dotnet 官方很早 ...
- 【一】ODB - C++ 访问数据库的利器--Hello World On Windows(Version-24)
本文以MySQL数据库为例,其他数据类似. 官方文档和下载 ODB官方首页 官方开发者说明书(开发教程) 安装下载首页(下载与安装教程Windows/Linux) Windows安装步骤(都是英 ...
- [开源] .Net 使用 ORM 访问 达梦数据库
前言 武汉达梦数据库有限公司成立于2000年,为中国电子信息产业集团(CEC)旗下基础软件企业,专业从事数据库管理系统的研发.销售与服务,同时可为用户提供大数据平台架构咨询.数据技术方案规划.产品部署 ...
- Python与数据库[2] -> 关系对象映射/ORM[3] -> sqlalchemy 的声明层 ORM 访问方式
sqlalchemy的声明层ORM访问方式 sqlalchemy中可以利用声明层进行表格类的建立,并利用ORM对象进行数据库的操作及访问,另一种方式为显式的 ORM 访问方式. 主要的建立步骤包括: ...
- Python与数据库[2] -> 关系对象映射/ORM[4] -> sqlalchemy 的显式 ORM 访问方式
sqlalchemy 的显式 ORM 访问方式 对于sqlalchemy,可以利用一种显式的ORM方式进行访问,这种方式无需依赖声明层,而是显式地进行操作.还有一种访问方式为声明层 ORM 访问方式. ...
- VS2017新建MVC+ORM中的LinqDb访问数据库项目
1.前提概述 ORM对象关系映射(Object-Relational Mapping)是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效果上说,它其实是创建了一个可在编程语言 ...
- Spring实战6:利用Spring和JDBC访问数据库
主要内容 定义Spring的数据访问支持 配置数据库资源 使用Spring提供的JDBC模板 写在前面:经过上一篇文章的学习,我们掌握了如何写web应用的控制器层,不过由于只定义了SpitterRep ...
随机推荐
- CentOS 7.6 安装htop
yum -y install epel-release.noarch yum -y install htop htop 上面左上角显示CPU.内存.交换区的使用情况,右边显示任务.负载.开机时间,下面 ...
- WPF DataGrid使用DataTable为数据源,添加CheckBox列使用Delete删除行的方法
首先将CanUserDeleteRows设置为False, 其次是设置KeyUp事件 并自定义DataGrid.Columns修改如下 <DataGrid x:Name="DG&quo ...
- 使用JWT作为Spring Security OAuth2的token存储
序 Spring Security OAuth2的demo在前几篇文章中已经讲过了,在那些模式中使用的都是RemoteTokenService调用授权服务器来校验token,返回校验通过的用户信息供上 ...
- gitLab 分支保护设置
一.需求背景 开发当前开发的分支遇到暂时无法解决的问题,现在有需要开发其他应用,所以希望运维这边将当前有问题分支冻结,让其他人无法进行修改,待后续有时间在排查代码问题 二.Gitlab配置步骤 1.搜 ...
- Kubernetes 安全概念详解
Kubernetes 安全框架 API 认证三关 • 访问K8S集群的资源需要过三关:认证.鉴权.准入控制• 普通用户若要安全访问集群API Server,往往需要证书.Token 或者用户名+密码 ...
- elasticSearch查询(一)
**整理成sql格式来看懂elastic** 1.多个字段多个and查询 sql格式:select * from product where title = 'xxxx' and pid = 12 l ...
- Spring整合Mybaits java.sql.SQLException: Access denied for user '***'@'localhost' (using password: YES)
最近在搞Spring和Mybatis的整合,当我们在Spring里面配置数据源,而数据源是从外部的properties文件读取过来的时候就会报错 java.sql.SQLException: Acce ...
- .net怎么使用Swagger
目录导航 一.安装 二.配置 三.调用 四.错误记录 一.安装 新建一个没有身份验证的mvc项目 - SwaggerMvc5Demo,然后添加一个名为Remote(自定义)且包含基础读写(不想手写)的 ...
- 记netmvc中Html.BeginForm的一个大坑
在asp.net mvc中,很常使用using(Html.BeginForm()){}来生成表单提交 不传入参数时,默认提交到原始url 最坑的是,此表单自动提交时,会将所在页面的原始url的参数也一 ...
- python 字符前缀,运算符、换行符、数据类型和变量
补充 *)/ 表示的除法即使是整数,结果也是浮点数 *)python表示的整数是没有大小限制的.而某些语言根据其储存长度是有大小限制的.例如Java对32位整数的范围限制在-2147483648-21 ...