MySQL Connector/C++ 接口实例
- bool CommonService::......(JSONNode& in, JSONNode& out)
- {
- /*=====校验json传入参数=====*/
- ..........
- /*=====解析json传入参数,得到安装码或者id, 安装时间, 硬盘序列号, ip,mac=====*/
- ..........
- /*=====通过安装码找到数据库中的对应记录写入传入的值=====*/
- /********数据库操作**********/
- //1.得到数据库连接
- Connection* con = G<ConnectionPool>().GetConnection();
- if (con == NULL)
- {
- LOG4CXX_ERROR(g_logger, "不能得到数据库连接");
- out.push_back(JSONNode(RESULT, ACTION_FALSE));
- out.push_back(JSONNode(ERROR_MESSAGE, "不能得到数据库连接"));
- return false;
- }
- int ret = 1;
- PreparedStatement* prep_stmt = NULL;
- ResultSet* res = NULL;
- try
- {
- con->setSchema(G<ConnectionPool>().GetDBName().c_str());
- //执行sql改变安装状态
- std::string sql_statement = "update tb_host set reg_date=?, sn=?, ip=?, mac=?, state=?, sync_state=? where reg_code =? and state=?"; //要执行的sql语句
- //事务处理
- con->setAutoCommit(0);
- prep_stmt = con->prepareStatement(sql_statement.c_str());
- prep_stmt->setString(1, install_time.c_str());
- prep_stmt->setString(2, harddrive_sn.c_str());
- prep_stmt->setString(3, ip_address.c_str());
- prep_stmt->setString(4, mac_address.c_str());
- prep_stmt->setInt(5, HAS_INSTALL);
- prep_stmt->setInt(6, HAS_SYNC);
- prep_stmt->setString(7, install_code.c_str());
- prep_stmt->setInt(8, NO_INSTALL);
- if(prep_stmt->executeUpdate() == 0)
- {
- ret = 2;
- LOG4CXX_INFO(g_logger, ".....");
- out.push_back(JSONNode(ERROR_MESSAGE, "....."));
- goto Finally_handle;
- }
- //调用赋默认策略存储过程
- std::string procedure = "CALL updateHostPolicyByModHost(?,?, @ret, @msg)";
- prep_stmt = con->prepareStatement(procedure.c_str());
- prep_stmt->setString(1, install_code.c_str());
- prep_stmt->setInt(2, 0);
- prep_stmt->execute();
- std::string query = "select @ret AS ret,@msg AS msg";
- prep_stmt = con->prepareStatement(query.c_str());
- res = prep_stmt->executeQuery();
- while(res->next())
- {
- if(res->getInt("ret") != 0)
- {
- LOG4CXX_ERROR(g_logger, "....." << res->getString("msg").c_str() << res->getInt("ret"));
- out.push_back(JSONNode(ERROR_MESSAGE, "....."));
- goto Finally_handle;
- }
- }
- con ->commit();
- }
- catch (SQLException& e)
- {
- try
- {
- con->rollback();
- }
- catch (SQLException& e)
- {
- ret = 0;
- LOG4CXX_ERROR(g_logger, "数据库异常" << e.what());
- }
- ret = 0;
- LOG4CXX_ERROR(g_logger, "数据库异常" << e.what());
- out.push_back(JSONNode(ERROR_MESSAGE, e.what()));
- }
- catch (...)
- {
- ret = 0;
- LOG4CXX_ERROR(g_logger, "其他错误");
- out.push_back(JSONNode(ERROR_MESSAGE, "其他错误"));
- }
- Finally_handle:
- DestorySql(res, prep_stmt);
- //将连接释放到连接池
- G<ConnectionPool>().ReleaseConnection(con);
- if (ret == 1)
- {
- out.push_back(JSONNode(RESULT, ACTION_SUCCESS));
- return true;
- }
- else if (ret == 2)
- {
- out.push_back(JSONNode(RESULT, ACTION_FALSE));
- return true;
- }
- else
- {
- out.push_back(JSONNode(RESULT, ACTION_FALSE));
- return false;
- }
- }
- /************************************************************************/
- /* 销毁数据库记录集资源 */
- /************************************************************************/
- void CommonService::DestorySql(ResultSet* res, PreparedStatement* prep_stmt)
- {
- if (res != NULL)
- {
- try
- {
- res ->close();
- }
- catch(SQLException& e)
- {
- LOG4CXX_ERROR(g_logger, "数据库异常" << e.what());
- }
- delete res;
- res = NULL;
- }
- if (prep_stmt != NULL){
- try
- {
- prep_stmt->close();
- }
- catch(SQLException& e)
- {
- LOG4CXX_ERROR(g_logger, "数据库异常" << e.what());
- }
- delete prep_stmt;
- prep_stmt = NULL;
- }
- }
MySQL Connector/C++ 接口实例相关推荐
- Linux MySQL Connector/C++ 编程实例
本篇文章介绍如何在Linux平台使用Connector/C++ 连接数据库,假定MySQL已经安装完成.如果还没有安装MySQL,请先安装.MySQL版本:8.0.19 目录 1. 安装Connect ...
- mysql connector cpp_MySQL Connector/C++(一)
如果我翻译错了或者翻译的不好,欢迎指正- Developing Database Applications Using MySQL Connector/C++ 这个教程会教你搭建安装MySQL Con ...
- Win10+Python+Django+Nginx+MySQL开发教程及实例(2)——Python连通操作MySQL
Win10+Python+Django+Nginx+MySQL开发教程及实例 PaulTsao 本系列教程共有四篇内容: 第一篇: 开发环境搭建 第二篇:用Python连通操作MySQL 第三篇:用N ...
- Developing DataBase Applications Using MySQL Connector/C++ 中文文本
日期 备注 2020年6月3日 对排版进行了调整. 翻译自mysql Connector C++帮助文档[http://download.csdn.net/detail/midle110/4931 ...
- mysql connector python linux_MySQL Connector/Python 安装、测试
安装Connector/Python: # wget http://cdn.mysql.com/Downloads/Connector-Python/mysql-connector-python-1. ...
- python连接sqlserver_python 链接sqlserver 写接口实例
我是使用pymssql完成的sqlserver,首先下载符合版本的pymssql的whl,然后安装,在pycharm的default setting->project Interpreter中确 ...
- python3 操作mysql数据库(mysql.connector 和 pymysql )
1. PyMySQL 的使用 (1) 什么是 PyMySQL? PyMySQL 是 Python 中用于连接 MySQL 服务器的一个库,它遵循 Python 数据库 API 规范 V2.0,并包 ...
- Win10+Python+Django+Nginx+MySQL开发教程及实例(1)——开发环境搭建
Win10+Python+Django+Nginx+MySQL开发教程及实例 PaulTsao 本教程共有三篇内容: 第一篇:Win10+Python+Django+Nginx+MySQL 开发环境搭 ...
- mysql connector c编程_MySQL数据库之MySQL Connector 编程
本文主要向大家介绍了MySQL数据库之MySQL Connector 编程 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. MySQL Connector 是MySQL数据库客户 ...
最新文章
- Windows 7环境下安装PHP 5.2.17
- MongoDB 的 upsert
- 三星I9100[4.0 固件ROM] [2012.03.15]万众期待的欧版官方4.0.3完美汉化完美教程
- 【JavaScript】JS事件机制学习
- SAP Fiori Elements 应用 manifest.json 文件里 resources.json 的含义
- Mac远程连接服务器
- 《论文笔记》Collaborative Visual Inertial SLAM for Multiple Smart Phones
- 理解允许定位,音频,网络电话..
- 亚马逊EC2根硬盘空间扩容
- Polygon Mesh Processing读书笔记——1三角网格Triangle Meshes
- 怎样教育孩子,能让孩子有更好的学习?
- win2003实现单用户远程登录
- 智能优化算法应用:基于灰狼算法的二维Otsu图像阈值分割-附代码
- Oracle 10G安装指导
- BP神经网络详解+原理
- MeshLab合并CC生产的分块OBJ模型
- 360路由器v2刷第三方固件_不走弯路:小米路由器3G 刷Padavan固件简单教程
- 宝塔linux 搭建rtmp+ffmpeg转流直播服务器
- 凯文·凯利最新演讲完整版:未来的十二个趋势
- 没有网络电脑计算机还能用吗,电脑连不上公用网络怎么办
热门文章
- 定时将应用日志移动到指定目录
- 《SQL Server 2012 T-SQL基础》读书笔记 - 1.背景
- 到底该不该从开发转测试
- Onpaint和OnDraw的区别
- 分支-03. 三天打鱼两天晒网(Switch…case)
- [转载] Intention scheduling for BDI agent systems
- 初识sparklyr—电影数据分析
- springboot 引入jdbc驱动_SpringBoot整合jdbc、durid、mybatis详解,数据库的连接就是这么简单...
- oracle导入excel字段超过4000字符数据_产品思考:B端产品中,为什么批量导入功能很重要?...
- 如何知道现在是否单用户模式_新手运营Shopee现在是否来得及,商品的转化如何提高?...