occi连接mysql数据库_C++ OCCI API数据库操作之连接、返回查询结果集为json格式

本文介绍了如何使用C++通过OCCI API连接MySQL数据库,并将查询结果集转换为JSON格式。内容包括环境配置、库文件获取、数据库连接、SQL执行以及结果集处理,最后将数据转化为JSON输出。
摘要由CSDN通过智能技术生成

使用C++操作数据库,转换返回结果集为json格式,易于解析。

以下程序的编译、运行环境:Windows 10 1803、VS2017 17.5.2(vc14)、解决方案配置:Release、解决方案平台:X86

1 #include

2 #include

3 #include

4 #pragma comment(lib,"oraocci12.lib")

5 #pragma comment(lib,"json_vc71_libmt.lib")

6 using namespacestd;7 using namespaceoracle::occi;8

9 intmain()10 {11   //初始化occi对象

12   Environment *env =NULL;13   Connection *conn =NULL;14   Statement *stmt =NULL;15   ResultSet *res =NULL;16

17   try

18 {19     char usrName[] = "shaqima";20     char usrPwd[] = "userpwd";21     char connectStr[] = "10.10.82.25:1521/orcl";22     //创建连接环境

23     env =Environment::createEnvironment();24     //连接到数据库

25     conn = env->createEnvironment(usrName,usrPwd,connectStr);26     if(!conn)27 {28       cout <

32     //oracle sql语句

33     char sqlStr[] = "select * from DEVICE_INFO t where t.ID=:1";34     stmt = conn->createStatement(sqlStr);35     //设置sql变量

36     stmt->setString(1,"1");37     //执行sql

38     res = stmt->executeQuery();39

40     //初始化jsoncpp对象

41 Json::Reader reader;42     //根节点

43 Json::Value rootNode;44     //子节点

45 Json::Value childNode;46

47     int nodeNum = 0;48     //查询出结果集,并存入json节点

49     while(res->next())50 {51       childNode["Id"] = res->getInt(1);52       childNode["AssetCode"] = res->getString(2);53       childNode["EncryptDrive"] = res->getString(3);54       //将子节点挂载到根节点

55       rootNode[nodeNum] =Json::Value(childNode);56       nodeNum++;57 }58

59     cout<

62 Json::FastWriter fw;63     cout<

72   stmt->closeResultSet(res);73   conn->terminateStatement(stmt);74   env->terminateConnection(conn);75 Environment::terminateEnvironment(env);76

77   system("pause");78   return 1;79 }

新手指路:

1、occi.h从Oracle instantclient-sdk-12.2.0.1.0中可获得。

OCCI 头文件包括:occi.h、occiCommon.h、occiControl.h、occiData.h、occiObjects.h,将所有文件置于同一引用目录下,项目中只需要引用occi.h即可。

2、oraocci12.lib是静态库,从Oracle instantclient-sdk-12.2.0.1.0中可获得,使用vc14目录下的oraocci12.lib。

3、我使用的是开源jsoncpp,从https://sourceforge.net/projects/jsoncpp/下载,jsoncpp头文件在jsoncpp-src-0.5.0/include/json下将所有文件置于同一引用目录下,项目中只需要引用json.h即可。

4、需要在本地计算机编译以获得json_vc71_libmt.lib,打开jsoncpp-src-0.5.0/makefiles/vs71/jsoncpp.sln项目,lib_json右键-属性,设置编译环境:

①“配置属性-常规-Windows SDK版本”,与项目设置一致

②“配置属性-常规-全程序优化”,设置为:无全程序优化

③“配置属性-C/C++-所有选项-运行库”,与项目设置一致

④解决方案配置、解决方案平台,与项目设置一致

编译成功后,在jsoncpp-src-0.5.0/build/vs71/release/lib_json/下为编译之后的文件(debug/下的为json_vc71_libmtd.lib),其中的.obj、.asm文件必须与.lib文件在同一目录下,请注意。

使用C++ OCCI API 增、删、改日后再研究~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值