分类: Oracle
数据库操作方式:可以采用ADO方式,也可以采用oracle本身提供的Proc*C/C++或者是OCCI方式操作数据库。
连接方式:可以是客户端连接、也可以是服务器端连接。
数据库配置:无论是何种连接都需要进行数据库连接的配置,一般在ORACLE_HOME下面的network/admin/tnsnames.ora文件中进行配置,如果没有此目录或者是此文件,需要自己手工添加。内容格式大致如下:
点击(此处)折叠或打开
BM2D0 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = XXX.XXX.XXX.XXX)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = BM2D0)
)
)
其中橄榄色可任意起名,一般在数据库连接是作为服务和用户名、密码一起确定数据库连接的参数。
第一个鲜粉色是远程oracle数据库所在服务器的IP地址,端口号一般为1521。
第二个鲜粉色是远程oracle所在主机的全局数据库名字,不能随意更改。
后两个搭配起来能够确定唯一连接对象。
客户端连接:
方式一:ADO
main.cpp
点击(此处)折叠或打开
#include "DBOperation.h"
#include
using namespace std;
void main()
{
CDBOperation dbOper;
bool bConn = dbOper.ConnToDB("Provider=OraOLEDB.Oracle.1;Persist Security Info=True;Data Source=xxx1", "xxx2", "xxx3");
if (false == bConn)
{
printf("连接数据库出现错误\n");
system("PAUSE");
return;
}
_RecordsetPtr pRst;
//执行查询语句
//char *sql = "select * from TSTUDENT";
char sql[255] = {0};
strcpy(sql, "select * from TSTUDENT");
pRst = dbOper.ExecuteWithResSQL(sql);
if (NULL == pRst)
{
printf("查询数据出现错误!\n");
system("PAUSE");
return;
}
if (pRst->adoEOF)
{
pRst->Close();
printf("There is no records in this table\n");
return;
}
_variant_t vSno, vName, v***, vAge, vDno, vDname, vCname;
while (!pRst->adoEOF)
{
//pRst->MoveFirst(); //记录集指针移动到查询结果集的前面
vSno = pRst->GetCollect(_variant_t((long)0));
vName = pRst->GetCollect(_variant_t("name"));
v*** = pRst->GetCollect(_variant_t("***"));
vAge = pRst->GetCollect(_variant_t(&