当前位置: 首页 > news >正文

dw6做网站linux做网站服务器那个软件好

dw6做网站,linux做网站服务器那个软件好,wordpress 仪表盘自定义,减肥网站源码文章目录OCCI概述OCCI介绍OCCI优势特性相关头文件OCCI库OCCI官方网站OCCI文档介绍和环境配置OCCI中连接Oracle数据库连接Oracle数据库示例OCCI中执行SQL语句OCCI中事务处理OCCI概述 OCCI介绍 Oracle C调用接口 – OCCI 即 Oracle C Call Interface OCCI 是Oracle 的C API, 允许…

文章目录

    • OCCI概述
      • OCCI介绍
      • OCCI优势
      • 特性
      • 相关头文件
      • OCCI库
      • OCCI官方网站
    • OCCI文档介绍和环境配置
    • OCCI中连接Oracle数据库
      • 连接Oracle数据库示例
    • OCCI中执行SQL语句
    • OCCI中事务处理

OCCI概述

OCCI介绍

Oracle C++调用接口 – OCCI 即 Oracle C++ Call Interface

OCCI 是Oracle 的C++ API, 允许你使用面向对象的特性、本地类、C++语言的方法来访问Oracle数据库

OCCI优势

OCCI提供其它访问ORACLE数据库所不具备的重要优势

  1. 基于标准C++和面向对象的设计

  2. 简单易用

  3. 与JDBC比较相近,容易学会

  4. 可以像操作C++实例一样操作用户定义的数据库对象

特性

  • 完整支持SQL/PLSQL
  • 为不断增长的用户和请求提供了弹性选项
  • 为使用用户自定义类型,如C++中的类,提供了无缝接口
  • 支持所有的Oracle数据类型以及LOB types(大对象)
  • 可以访问数据库元数据

相关头文件

#include <occi.h>   -- 程序中只需要包含这一个头文件//以下不需要添加
#include <occiCommon.h>
#include <occiControl.h>
#include <occiData.h>
#include <occiObjects.h>

OCCI库

  • Windows平台
    • oraocci11.lib/ oraocci11d.lib
    • oraocci11.dll/ oraocci11d.dll
  • Linux平台
    • libnnz11.so
    • libocci.so
    • libclntsh.so

OCCI官方网站

oracle官方网站:https://www.oracle.com/index.html

OCCI编程指南

C++参考网址:https://www.oracle.com/database/technologies/appdev/oci.html

OCCI文档介绍和环境配置

Vs2017环境的配置:

第一步: 配置头文件和库目录

在这里插入图片描述

注意: 添加库的时候 先添加oraocci11.lib 然后添加oraocci11d.lib

OCCI中连接Oracle数据库

8.1 初始化 - Environment 类
在这里插入图片描述

OCCI通过创建一个Environment的对象完成初始化工作。

可以通过Environment创建数据库连接,从而进行其它的操作

要创建Environment,应该调用Environment类的静态方法createEnvironment()

// 环境初始化
Environment* env = Environment::createEnvironment();
// 关闭, 释放资源
Environment::terminateEnvironment(env);

8.2 连接数据库 - Connection 类

连接数据库通过Connection类的对象实例实现

调用Environment类的**createConnection()**方法可以创建一个Connection对象;

函数原型

Connection *Environment::createConnection( const string &userName,const string &password, const string &connectString );

函数调用

const string userName = "scott";    // 用户名
const string passwd = "密码";  // 密码
const string connstr = "192.168.247.1:1521/orcl"; // 数据库连接串
Connection* conn = env->createConnection(userName, passwd, connstr);

使用**Environment::terminateConnection()**断开连接

// 断开连接
env->terminateConnection(conn);

连接Oracle数据库示例

#include <iostream>
#include <occi.h>using namespace std;
using namespace oracle::occi;  //命名空间int main(void)
{string name = "scott";string passwd = "11";string connectStr = "192.168.15.33:1521/orcl";//1. 创建OCCI的环境Environment *env = Environment::createEnvironment();if (NULL == env){cout << "createEnvironment failed...." << endl;return 1;}//2. 连接数据库Connection *connect = env->createConnection(name, passwd, connectStr);if (NULL == connect){cout << "CreateConnection failed..." << endl;return 1;}cout << "连接oracle服务端ok ..." << endl;//3. 关闭连接env->terminateConnection(connect);//4. 终止环境Environment::terminateEnvironment(env);return 0;
}

OCCI中执行SQL语句

执行SQL

Statement 类用于执行SQL语句,并获取返回结果。

ResultSet 类用于处理SELECT 查询的结果。

对于所有类型的数据的绑定或者获取,OCCI都提供了统一的方法

  • setXXX 方法用于Statement
  • getXXX 方法用于Statement & ResultSet

OCCI会自动处理类型之间的转换。

使用方法:

使用Connection:😗*createStatement()**创建Statement对象, 指定 SQL 命令(DDL/DML/query)作为参数

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>#include <occi.h>using namespace std;
using namespace oracle::occi;int main()
{string dbUser = "scott";string dbPwd = "11";string connStr = "192.168.16.47:1521/orcl";//1. 创建OCCI环境Environment *env = Environment::createEnvironment();if (NULL == env){cout << "createEnvironment failed.." << endl;return 1;}cout << "创建一个环境ok" << endl;{//2. 连接到数据库Connection *conn = env->createConnection(dbUser, dbPwd, connStr);if (NULL == env){cout << "createConnection failed.." << endl;return 1;}cout << "连接Oracle ok" << endl;//创建语句对象Statement *stmt = conn->createStatement();//执行select语句//stmt->executeUpdate("insert into dept values(9, '9name', '9loc')");//执行delete语句//stmt->executeUpdate("delete from dept where deptno = 9");//执行Update语句stmt->executeUpdate("update dept set dname = '8AAA', loc='8LOC' where deptno = 8");#if 0//使用预处理语句stmt->setSQL("insert into dept values(:1, :2, :3)");stmt->setInt(1, 9);stmt->setString(2, "9Name");stmt->setString(3, "9Loc");stmt->executeUpdate();
#endif//查询ResultSet *rs = stmt->executeQuery("select deptno, dname from dept");int id = -1;string name;//获取结果while (rs->next()){id = rs->getInt(1);name = rs->getString(2);cout << id << endl;}stmt->closeResultSet(rs);//终止语句对象conn->terminateStatement(stmt);//3. 终止连接env->terminateConnection(conn);}//4. 终止一个环境Environment::terminateEnvironment(env);cout << "hello itcast" << endl;system("pause");return 0;
}

OCCI中事务处理

#include <iostream>
#include <occi.h>
#include <string>
using namespace std;
using namespace oracle::occi;int main()
{// 1. 初始化连接环境Environment* env = Environment::createEnvironment();// 2. 创建连接string userName = "scott";string passwd = "tiger";string connstr = "192.168.247.129:1521/orcl";// conn是建立连接之后得到的对象Connection* conn = env->createConnection(userName, passwd, connstr);if (conn == NULL){cout << "连接失败..." << endl;return -1;}cout << "数据库连接成功..." << endl;// 3. 创建一个用户操作sql的对象// key给这个函数指定sql语句也可以不指定Statement* stat = conn->createStatement();// 如果没有指定执行的sql可以通过set方法指定string sql = "select * from dept";// stat->setSQL(sql);// 执行sql语句ResultSet* resSet = stat->executeQuery(sql);// 取出所有的记录while (resSet->next()){// 每循环一次读一条记录// 读出这条记录的三个字段int no = resSet->getInt(1); // 1 - 第一个字段string str1 = resSet->getString(2);string str2 = resSet->getString(3);cout << "no: " << no << endl;cout << "name" << str1 << endl;cout << "loc" << str2 << endl;}// 关闭结果集stat->closeResultSet(resSet);// 插入语句// 设置sql语句// occi dml 会自动打开一个事务sql = "insert into dept values(:1, :2, :3)";stat->setSQL(sql);stat->setInt(1, 66);stat->setString(2, "itcast");stat->setString(3, "china");// 执行sql语句
#if 0int ret = stat->executeUpdate();if (ret == 0){cout << "insert fail..." << endl;// 失败状态回滚conn->rollback();return -1;}conn->commit();
#else// 设置事务的自动处理stat->setAutoCommit(true);int ret = stat->executeUpdate();if (ret == 0){cout << "insert fail..." << endl;// 失败状态回滚return -1;}
#endifconn->terminateStatement(stat);env->terminateConnection(conn);// 释放资源Environment::terminateEnvironment(env);return 0;
}
http://www.dtcms.com/a/617727.html

相关文章:

  • 生成式人工智能赋能教师专业发展的机制与障碍:基于教师能动性的质性研究
  • 无锡锡山区建设局网站北京网站定制建设
  • 【Word学习笔记】Word如何转高清PDF
  • 小程序地图导航,怎样实现用户体验更好
  • 下流式接入ai
  • PDF无法打印怎么解决?
  • 南宁市网站建设哪家好企业网站模板html
  • 华为数据中心CE系列交换机级联M-LAG配置示例
  • 【HarmonyOS】性能优化——组件的封装与复用
  • 低代码平台的性能优化:解决页面卡顿、加载缓慢问题
  • 开源工程笔记:gitcode/github与性能优化
  • 微页制作网站模板手机上自己做网站吗
  • 基于51单片机的8路简易抢答器
  • Java设计模式精讲从基础到实战的常见模式解析
  • 柯美C654e打印机扫描复印有点画,怎么解决?
  • Vibe Coding之道:从Hulk扩展程序看Prompt工程的艺术
  • 【语义分割】12个主流算法架构介绍、数据集推荐、总结、挑战和未来发展
  • 宜兴市的城乡建设管理局网站泉州全网营销
  • Spring中使用Async进行异步功能开发实战-以大文件上传为例
  • 网络安全 | 深入解析XSS攻击与防御实战
  • 怎么做宇宙网站为何有的网站打不开
  • 做的网站文字是乱码wordpress upgrade文件夹
  • day1江协科技
  • Java案例拆解:junit/jvm一步到位
  • **论文初稿撰写工具2025推荐,高效写作与智能辅助全解析*
  • 三级供应链竞合博弈模拟
  • Apache Doris 自动分区:如何应对分布式环境下的复杂并发挑战|Deep Dive
  • 岭回归——附MATLAB代码
  • 深入分析线程池
  • 宁波大型网站建设大连网站开发公司电话