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
最新文章
- 技术笔记:Indy IdSMTP支持腾讯QQ邮箱邮件发送
- cookies如何成为全局变量以及设置,删除,获取
- IE 文档模式
- js控制滚动条平滑滚动到制定位置
- 多线程编程3 - NSOperationQueue
- SAP Connector 3.0 .Net 开发
- perl基本语法
- Ext.Net 布局
- nutch getOutLinks 外链的处理
- Android入门学习:Android 系统框架及应用程序执行过程
- C#连接Oracle数据库基本类
- Java大顶和小顶
- python中的time模块
- 【博弈】【HDU】取石子游戏
- Linux里文件和文件夹权限的含义
- Bugku-CTF之web2-听说聪明的人都能找到答案
- Go编写一个比特币交易自动出价程序
- vue - webpack.dev.conf.js for FriendlyErrorsPlugin
- springboot整合mybatis,druid,mybatis-generator插件完整版
- nagios学习记录
热门文章
- Go gRPC Hello World
- Vue.js 源码分析(二十) 指令篇 v-once指令详解
- Spring自动注入,类型注入、名称注入(两种方式)
- vs2017离线包下载安装并且不占用C盘空间使用教程
- 使用AvalonEdit实现WPF的Lua编辑器
- 如何利用 VisualStudio2019 遠端工具進行偵錯
- JS读取xml
- 【转】测试开发工程师必备软硬能力&;高级测试开发工程师需要具备什么能力?
- .NET开发框架(六)-架构设计之IIS负载均衡(视频)
- 前端开发HTML5——基础标签