C++ 操作oracle 数据库

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库操作方式:可以采用ADO方式,也可以采用oracle本身提供的Proc*C/C++或者是OCCI方式操作数据库。

连接方式:可以是客户端连接、也可以是服务器端连接。

数据库配置:无论是何种连接都需要进行数据库连接的配置,一般在ORACLE_HOME下面的network/admin/tnsnames.ora文件中进行配置,如果没有此目录或者是此文件,需要自己手工添加。内容格式大致如下:

点击(此处)折叠或打开

1.BM2D0 =

2. (DESCRIPTION =

3. (ADDRESS_LIST =

4. (ADDRESS = (PROTOCOL = TCP)(HOST = XXX.XXX.XXX.XXX)(PORT = 1521))

5. )

6. (CONNECT_DATA =

7. (SERVICE_NAME = BM2D0)

8. )

9. )

其中橄榄色可任意起名,一般在数据库连接是作为服务和用户名、密码一起确定数据库连接的参数。

第一个鲜粉色是远程oracle数据库所在服务器的IP地址,端口号一般为1521。

第二个鲜粉色是远程oracle所在主机的全局数据库名字,不能随意更改。

后两个搭配起来能够确定唯一连接对象。

客户端连接:

方式一:ADO

main.cpp

点击(此处)折叠或打开

1.#include "DBOperation.h"

2.#include

ing namespace std;

4.

5.void main()

6.{

7. CDBOperation dbOper;

8. bool bConn = dbOper.ConnToDB("Provider=OraOLEDB.Oracle.1;Persist Securi

ty Info=True;Data Source=xxx1","xxx2","xxx3");

9.if(false== bConn)

10.{

11. printf("连接数据库出现错误\n");

12. system("PAUSE");

13. return;

14.}

15.

16. _RecordsetPtr pRst;

17.

18.//执行查询语句

19.//char *sql ="select * from TSTUDENT";

20. char sql[255]={0};

21. strcpy(sql,"select * from TSTUDENT");

22. pRst = dbOper.ExecuteWithResSQL(sql);

23.if(NULL== pRst)

24.{

25. printf("查询数据出现错误!\n");

26. system("PAUSE");

27. return;

28.}

29.if(pRst->adoEOF)

30.{

31. pRst->Close();

32. printf("There is no records in this table\n");

33. return;

34.}

35. _variant_t vSno, vName, v***, vAge, vDno, vDname, vCname;

36.while(!pRst->adoEOF)

37.{

38.//pRst->MoveFirst();//记录集指针移动到查询结果集的前面

39. vSno = pRst->GetCollect(_variant_t((long)0));

40. vName = pRst->GetCollect(_variant_t("name"));

41. v*** = pRst->GetCollect(_variant_t("***"));

42. vAge = pRst->GetCollect(_variant_t("age"));

43.//vDno = pRst->GetCollect("dno");

44.//vDname = pRst->GetCollect("dname");

45.//vCname = pRst->GetCollect("cname");

46.

47. printf("%s\t%s\t%s\t%d\n",(LPSTR)(LPCSTR)(_bstr_t)vSno,(LPSTR)(LP

CSTR)_bstr_t(vName),(LPSTR)(LPCSTR)_bstr_t(v***), vAge.intVal);

48. pRst->MoveNext();

49.}

50.

51.//执行插入语句

52.//sprintf(sql,"insert into TSTUDENT(sno, name, ***, age) values('%s',

'%s', '%s', %d)","20080016","全局","女", 25);

53. strcpy(sql,"insert into TSTUDENT(sno, name, ***, age) values('20080001

', '全局', '女', 25)");

54. pRst = dbOper.ExecuteWithResSQL(sql);

55.if(NULL!= pRst)

56.{

57. printf("插入数据成功\n");

58.}

59.//执行删除语句

60.

61. sprintf(sql,"delete from TSTUDENT where sno = '%s'","20080017");

62. pRst = dbOper.ExecuteWithResSQL(sql);

63.if(NULL!= pRst)

64.{

65. printf("删除数据成功\n");

66.}

67. system("PAUSE");

68.//pRst->Close();

69.}

其中XXX1:是tnsnames.ora中配置的服务名,XXX2是用户名,XXX3是密码。

DBOperation.h:

点击(此处)折叠或打开

1.#pragma once

2.#import "c:\program files\common files\system\ado\msado15.dll" no_namespace

rename("EOF","adoEOF")

相关文档
最新文档