刚开始接触数据库,有几个问题,我想自己写个程序去连接oracle服务端,思路是怎样的?C++语言,有没有免费的oracle服务端让我去连接试试,网络协议TCP,给个例子代码最好,简单的查询就行,主要是步骤,oracle客户端是啥玩意?安装它有什么用?是不是就是一个现成的连接服务端的程序
贴代码给高分,解决问题给高分
贴代码给高分,解决问题给高分
解决方案 »
- 求高手解决 在centOS下安装oracle 出错 帮忙请指导下 谢谢
- 请教:存储过程变量定义问题
- oracle 可以在视图上建 立索引吗?
- Oracle中的XML模板注册
- 向临时表中追加record的问题
- where条件里的and or
- 请问我想取出记录集的第30之60条记录,应该怎么写呢?我写成where rownum>30 and rownum<60为什么选不出来纪录呢?
- sql server 中的 use dbname,对应oracle中的什么语句?在线等待!
- 比较sql server ,oracle ,db2
- oracle创建数据库报关于java问题待解决
- to_date()转化格式的问题
- 关于pl/sql动态声明变量的问题
sword connection::connect(const char* username, const char* password,
const char* server, const int mode)
{
char msg[128];
if(_state == connected) return 0;
if (OCIInitialize(OCI_DEFAULT, (dvoid *)0,
0,
0,
0 ))
{
sprintf(msg,"OCIInitialize() error.");
tool.DealInfo(INFO,msg,0);
return OCI_ERROR;
}
if (OCIEnvInit(&_envhp, (ub4) OCI_DEFAULT,
(size_t) 0, (dvoid **) 0 ))
{
sprintf(msg,"OCIEnvInit() error.");
tool.DealInfo(INFO,msg,0);
return OCI_ERROR;
}
/* Allocate a service handle */
if (OCIHandleAlloc((dvoid *) _envhp, (dvoid **) &_svchp,
(ub4) OCI_HTYPE_SVCCTX, (size_t) 0, (dvoid **) 0))
{
sprintf(msg,"OCIHandleAlloc svchp error.");
tool.DealInfo(INFO,msg,0);
return OCI_ERROR;
}
/* Allocate an error handle */
if (OCIHandleAlloc((dvoid *) _envhp, (dvoid **) &_errhp,
(ub4) OCI_HTYPE_ERROR, (size_t) 0, (dvoid **) 0))
{
sprintf(msg,"OCIHandleAlloc errhp error.");
tool.DealInfo(INFO,msg,0);
return OCI_ERROR;
}
/* Allocate a server handle */
if (OCIHandleAlloc((dvoid *) _envhp, (dvoid **) &_srvhp,
(ub4) OCI_HTYPE_SERVER, (size_t) 0, (dvoid **) 0))
{
sprintf(msg,"OCIHandleAlloc srvhp error.");
tool.DealInfo(INFO,msg,0);
return OCI_ERROR;
}
/* Allocate a authentication handle */
if (OCIHandleAlloc((dvoid *) _envhp, (dvoid **) &_authp,
(ub4) OCI_HTYPE_SESSION, (size_t) 0, (dvoid **) 0))
{
sprintf(msg,"OCIHandleAlloc authp error.");
tool.DealInfo(INFO,msg,0);
return OCI_ERROR;
}
if (OCIServerAttach(_srvhp, _errhp, (text *) server,
(sb4) strlen((char *)server), (ub4) OCI_DEFAULT))
{
sprintf(msg,"OCIServerAttach error.");
tool.DealInfo(INFO,msg,0);
return OCI_ERROR;
}
if (OCIAttrSet((dvoid *) _svchp, (ub4) OCI_HTYPE_SVCCTX,
(dvoid *) _srvhp, (ub4) 0, (ub4) OCI_ATTR_SERVER, _errhp))
{
sprintf(msg,"OCIAttrSet error.");
tool.DealInfo(INFO,msg,0);
return OCI_ERROR;
}
/* Set Attribute in the authentication handle */
if (OCIAttrSet((dvoid *) _authp, (ub4) OCI_HTYPE_SESSION,
(dvoid *) username, (ub4) strlen((char *) username),
(ub4) OCI_ATTR_USERNAME, _errhp))
{
sprintf(msg,"OCIAttrSet username error.");
tool.DealInfo(INFO,msg,0);
return OCI_ERROR;
}
if (OCIAttrSet((dvoid *) _authp, (ub4) OCI_HTYPE_SESSION,
(dvoid *) password, (ub4) strlen((char *) password),
(ub4) OCI_ATTR_PASSWORD, _errhp))
{
sprintf(msg,"OCIAttrSet password error.");
tool.DealInfo(INFO,msg,0);
return OCI_ERROR;
}
if (OCISessionBegin(_svchp, _errhp, _authp, OCI_CRED_RDBMS, mode))
{
sprintf(msg,"OCISessionBegin error.");
tool.DealInfo(INFO,msg,0);
return OCI_ERROR;
}
/* Set the authentication handle in the Service handle */
if (OCIAttrSet((dvoid *) _svchp, (ub4) OCI_HTYPE_SVCCTX,
(dvoid *) _authp, (ub4) 0, (ub4) OCI_ATTR_SESSION, _errhp))
{
sprintf(msg,"OCIAttrSet _svchp, _authp error.");
tool.DealInfo(INFO,msg,0);
return OCI_ERROR;
}
_state = connected;
return OCI_SUCCESS;
}
oci的例子你可以看看这个:
http://www.orafaq.com/wiki/Oracle_Call_Interfaces
那就使用OCI或Proc * C++就好了。oracle客户端是啥玩意?
安装它有什么用?就是一个现成的连接服务端的程序
除非你是程序只是那种Socket的服务端和客户端,来回发送接收消息的,勉强可以不用数据库。
现在的程序一般情况都要用到数据库的:比如说客户办理了哪些业务,客户的帐户口令信息。。等等。
不用数据库,怎么能称为系统呢。