用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数据库并不复杂,只需要准备好软件并正确配置,就可以很容易的实现。