用DOS连接Oracle数据库(dos连接oracle)

Oracle是现今市场上流行的关系型数据库管理系统。有时,我们需要使用DOS连接Oracle数据库。本文将介绍如何连接Oracle数据库。

首先,我们需要准备好客户端连接Oracle所需的软件,其中包括Oracle数据库客户端和ODBC驱动程序。安装完毕后,我们可以在ODBC Data Source Administrator(ODBC数据源管理器)中配置一个Oracle数据源。

其次,我们可以通过下面的DOS命令来连接Oracle数据库:

sqlplus scott/tiger@my_sid

其中,my_sid是要连接的 Oracle 服务器的SID(System Identifier),scott是要连接的Oracle数据库的用户名,tiger是连接的口令。

如果我们想用C编程来连接Oracle,可以使用Oracle的OCI库(Oracle Call Interface),该库提供了用面向对象方式来建立一个C程序和Oracle之间的连接,如下所示:

#include

int main()

{

/* 变量定义 */

OCIEnv *envhp;

OCIServer *srvhp;

OCIError *errhp;

OCISession *authp;

OCISvcCtx *svchp;

char conn_str[100];

/* 初始化变量 */

envhp = (OCIEnv*)0;

srvhp = (OCIServer*)0;

errhp = (OCIError*)0;

authp = (OCISession*)0;

svchp = (OCISvcCtx*)0;

/* 准备连接串 */

sprintf(conn_str, “(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=%s)(PORT=%d)) (CONNECT_DATA=(SID=%s)))”,

“localhost”, //主机名

1521, //端口号

”my_sid”); //SID

/* 创建环境句柄 */

OCIEnvCreate( &envhp, OCI_DEFAULT, (dvoid *)0,

(dvoid * (*)(dvoid *, size_t)) 0,

(dvoid * (*)(dvoid *, dvoid *, size_t))0,

(void (*)(dvoid *, dvoid *)) 0, (size_t) 0, (dvoid **) 0 );

/* 分配服务器句柄 */

OCIHandleAlloc( (dvoid *) envhp, (dvoid **) &srvhp, OCI_HTYPE_SERVER,

(size_t) 0, (dvoid **) 0);

/* 分配错误句柄 */

OCIHandleAlloc( (dvoid *) envhp, (dvoid **) &errhp, OCI_HTYPE_ERROR,

(size_t) 0, (dvoid **) 0);

/* 连接Oracle数据库 */

OCIServerAttach( srvhp, errhp, (text *)conn_str, strlen((char *)conn_str), 0);

/* 分配会话句柄 */

OCIHandleAlloc( (dvoid *) envhp, (dvoid **) &authp,

(ub4) OCI_HTYPE_SESSION, (size_t) 0, (dvoid **) 0);

/* 设置会话参数 */

OCIAttrSet( (dvoid *) authp, (ub4) OCI_HTYPE_SESSION,

(dvoid *) ”scott”, (ub4) strlen((char *) ”scott”),

(ub4) OCI_ATTR_USERNAME, errhp );

OCIAttrSet( (dvoid *) authp, (ub4) OCI_HTYPE_SESSION,

(dvoid *) ”tiger”, (ub4) strlen((char *) ”tiger”),

(ub4) OCI_ATTR_PASSWORD, errhp );

/* 开始会话 */

OCISessionBegin( svchp, errhp, authp, OCI_CRED_RDBMS,

(ub4) OCI_DEFAULT);

/* 设置服务上下文句柄 */

OCIAttrSet( (dvoid *) svchp, OCI_HTYPE_SVCCTX, (dvoid *) srvhp,

(ub4) 0, OCI_ATTR_SERVER, errhp );

/* 激活会话 */

OCISessionEnd( svchp, errhp, authp, OCI_DEFAULT);

/* 销毁会话句柄 */

OCIHandleFree( (dvoid *) authp, (ub4) OCI_HTYPE_SESSION);

/* 销毁错误句柄 */

OCIHandleFree( (dvoid *) errhp, (ub4) OCI_HTYPE_ERROR);

/* 销毁服务器句柄 */

OCIHandleFree( (dvoid *) srvhp, (ub4) OCI_HTYPE_SERVER);

/* 销毁环境句柄 */

OCIHandleFree( (dvoid *) envhp, (ub4) OCI_HTYPE_ENV);

return 0;

}

最后,要记住释放分配的句柄,以免造成内存泄漏。总的来说,用DOS连接Oracle数据库并不复杂,只需要准备好软件并正确配置,就可以很容易的实现。


数据运维技术 » 用DOS连接Oracle数据库(dos连接oracle)