⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 《Oracle Spatial与OCI高级编程》相关配套源码。介绍了Oracle数据库中的两项关键开发技术Oracle Spatial以及OCI(Oracle Call Interface)。
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <oci.h>

#if defined(WIN32)
#pragma comment(lib, "oci.lib")
#endif

int main()
{
	
	OCIEnv *myenvhp; // 环境句柄
	OCIServer *mysrvhp; //服务器句柄
	OCIError *myerrhp; //错误句柄
	OCISession *myusrhp; //用户会话句柄
	OCISvcCtx *mysvchp; //服务上下文句柄
	
	//使用线程和对象模式来创建环境句柄
	OCIEnvCreate(&myenvhp, OCI_THREADED|OCI_OBJECT, (dvoid *)0,
		0, 0, 0, (size_t) 0, (dvoid **)0);
	//分配服务器句柄
	OCIHandleAlloc ((dvoid *)myenvhp, (dvoid **)&mysrvhp,
		OCI_HTYPE_SERVER, 0, (dvoid **) 0);
	//分配错误句柄
	OCIHandleAlloc ((dvoid *)myenvhp, (dvoid **)&myerrhp,
		OCI_HTYPE_ERROR, 0, (dvoid **) 0);
	//创建服务器上下文句柄,"orcl"为建立连接的数据库名
	if (OCIServerAttach (mysrvhp, myerrhp, (text *)"orcl",
		strlen ("orcl"), OCI_DEFAULT) == OCI_SUCCESS)
		printf("\n已经成功连上数据库orcl\n");
	else //终止程序
	{
		printf("\n数据库名字不对,连接数据库失败!\n");
		return -1;
	}
	//分配服务器上下文句柄
	OCIHandleAlloc ((dvoid *)myenvhp, (dvoid **)&mysvchp,
		OCI_HTYPE_SVCCTX, 0, (dvoid **) 0);
	//设置服务器上下文句柄的服务器句柄属性
	OCIAttrSet ((dvoid *)mysvchp, OCI_HTYPE_SVCCTX,
		(dvoid *)mysrvhp, (ub4) 0, OCI_ATTR_SERVER, myerrhp);
	//分配用户会话句柄
	OCIHandleAlloc ((dvoid *)myenvhp, (dvoid **)&myusrhp,
		OCI_HTYPE_SESSION, 0, (dvoid **) 0);
	//为用户会话句柄设置用户名和密码属性
	OCIAttrSet ((dvoid *)myusrhp, OCI_HTYPE_SESSION,
		(dvoid *)"ocitest", (ub4)strlen("ocitest"),
		OCI_ATTR_USERNAME, myerrhp);
	OCIAttrSet ((dvoid *)myusrhp, OCI_HTYPE_SESSION,
		(dvoid *)"ocitest", (ub4)strlen("ocitest"),
		OCI_ATTR_PASSWORD, myerrhp);
	if (OCISessionBegin ((dvoid *) mysvchp, myerrhp, myusrhp,
		OCI_CRED_RDBMS, OCI_DEFAULT) == OCI_SUCCESS)
	{
		printf("成功建立用户会话!\n");
	}
	else
	{
		printf("建立用户会话失败!\n");
		return -1;
	}
	//在服务器上下文环境中设置用户会话属性
	OCIAttrSet ( (dvoid *)mysvchp, OCI_HTYPE_SVCCTX,
		(dvoid *)myusrhp, (ub4) 0, OCI_ATTR_SESSION, myerrhp);
	
	//......

	//结束会话
	OCISessionEnd(mysvchp, myerrhp, myusrhp, OCI_DEFAULT);
	//断开连接
	OCIServerDetach(mysvchp, myerrhp, OCI_DEFAULT);
	//释放环境句柄
	OCIHandleFree((void*)myenvhp, OCI_HTYPE_ENV);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -