1、创建环境句柄(分配句柄)
2、通过环境句柄分配服务器句柄
3、通过环境句柄分配错误处理句柄
4、测试服务器是否能够被连接(实例化服务器句柄)
5、通过环境句柄分配服务器上下文句柄
6、设置服务器上下文句柄的服务器属性(后面还需要设置其会话属性)
7、通环境句柄分配用户会话句柄
8、设置用户会话句柄的用户名和密码属性
9、建立用户会话连接,测试是否能够连接成功(实例化用户会话句柄)
10、设置服务器上下文的用户会话属性
11、分配语句句柄,准备语句,语句执行等过程
12、结束会话
13、断开连接
14、释放环境句柄
2、通过环境句柄分配服务器句柄
3、通过环境句柄分配错误处理句柄
4、测试服务器是否能够被连接(实例化服务器句柄)
5、通过环境句柄分配服务器上下文句柄
6、设置服务器上下文句柄的服务器属性(后面还需要设置其会话属性)
7、通环境句柄分配用户会话句柄
8、设置用户会话句柄的用户名和密码属性
9、建立用户会话连接,测试是否能够连接成功(实例化用户会话句柄)
10、设置服务器上下文的用户会话属性
11、分配语句句柄,准备语句,语句执行等过程
12、结束会话
13、断开连接
14、释放环境句柄
/*
* @Content : 获取一个查询的结果
****/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <oci.h>
#if defined(WIN32)
#pragma comment(lib, "oci.lib")
#endif
//获取错误诊断信息
//@param : pErr,错误句柄
// lStatus, 状态码信息
//@return : 0: 失败,出错
// 1: 成功返回
int CheckErr(OCIError *pErr, sword lStatus);
//数据库服务名
static text* dbname = (text*) "//10.0.4.122:1521/orcl";
//用户及密码
static text* username = (text*) "xiaoming" ;
static text* password =(text*) "XiaoMing123";
//DML(INSERT)操作的SQL语句
//static text* select = (text*) "SELECT id, name, age, address FROM student";
static text* select = (text*) "SELECT id, name, age FROM student";
static char colname[64] = "";
int main()
{
OCIEnv *envhp; // 环境句柄
OCIServer *srvhp; //服务器句柄
OCIError *errhp; //错误句柄
OCIError *errhp1; //错误句柄