文档章节

linux下C++连接mysql

suprock
 suprock
发布于 2015/04/20 07:24
字数 370
阅读 21
收藏 0
点赞 0
评论 0

想在程序中加入存储数据的功能,程序使用C++语言开发,于是就打算看看C++如何访问MySql,之前自学过MySql,也安装过MySql的开发包,相应的头文件已经有了,看了一下mysql.h头文件,里面有C的API,所以就需要用C++来封装一下,借鉴一下网上已有的资源,下面列出封装后的程序:

  MySqlDb.h
  #ifndef MYSQLDB_H
  #define MYSQLDB_H
  #include <mysql/mysql.h>
  #include <string>
  using namespace std;
  class MySqlDb
  {
  public:
  MySqlDb();
  bool initDB(string server_host , string user, string password, string db_name);
  bool executeSQL(string sql_str);
  bool create_table(string table_str_sql);
  ~MySqlDb();
  private:
  MYSQL *connection;
  MYSQL_RES *res;
  MYSQL_ROW row;
  };
  #endif
  MySqlDb.cpp
  #include "MySqlDb.h"
  #include <stdlib.h>
  #include <iostream>
  MySqlDb::MySqlDb()
  {
  //init mysql connection
  connection = mysql_init(NULL);
  if(connection == NULL)
  {
  cout《"mysql_init error\n";
  exit(1);
  }
  }
  MySqlDb::~MySqlDb()
  {
  //shutdown connect
  if(connection != NULL)
  {
  mysql_close(connection);
  }
  }
  //
  bool MySqlDb::initDB(string server_host , string user, string password , string db_name )
  {
  //implement connect to mysql
  connection = mysql_real_connect(connection , server_host.c_str() , 
user.c_str() , password.c_str() , db_name.c_str() , 0 , NULL , 0);
  if(connection == NULL)
  {
  cout《"mysql_real_connect error\n";
  exit(1);
  }
  return true;
  }
  //execute mysql
  bool MySqlDb::executeSQL(string sql_str)
  {
  // query
  if(mysql_query(connection, "set names utf8"))
  {
  cout《mysql_errno(connection)《" "《mysql_error(connection)《"\n";
  }
  int t = mysql_query(connection,  sql_str.c_str());
  if(t)
  {
  cout《"Error making query: "《mysql_error(connection)《"\n";
  exit(1);
  }
  else
  {
  res = mysql_use_result(connection);
  if(res)
  {
  for(int i = 0 ; i < mysql_field_count(connection) ; i++)
  {
  row = mysql_fetch_row(res);
  if(row <= 0)
  {
  break;
  }
  for(int r = 0 ; r  < mysql_num_fields(res) ; r ++)
  {
  cout《row[r]《" ";
  }
  cout《"\n";
  }
  }
  mysql_free_result(res);
  }
  return true;
  }
  //create table
  bool MySqlDb::create_table(string table_str_sql)
  {
  int t = mysql_query(connection , table_str_sql.c_str());
  if(t)
  {
  cout《"Error making query: "《mysql_error(connection)《"\n";
  exit(1);
  }
  return true;
  }


本文转载自:http://itlab.idcquan.com/linux/administer/961112_2.html

共有 人打赏支持
suprock
粉丝 3
博文 12
码字总数 3797
作品 0
海淀
程序员
什么是 C 和 C ++ 标准库?

简要介绍编写C/C ++应用程序的领域,标准库的作用以及它是如何在各种操作系统中实现的。 我已经接触C++一段时间了,一开始就让我感到疑惑的是其内部结构:我所使用的内核函数和类从何而来? ...

oschina ⋅ 04/10 ⋅ 0

C语言/C++编程学习强势之处的体现

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 05/12 ⋅ 0

在学校和老师学习C/C++你学到了什么?

计算机行业在未来是一个具有无限潜力的行业,但同样行业竞争力也是十分强烈,同样事靠计算机吃饭的,你是职业叫码农,人家的职业叫程序员,大牛的职业是架构师、分析师,你甘心成为一个日夜加...

悟空_b201 ⋅ 04/10 ⋅ 0

如何自学成为C/C++程序员大牛

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 05/11 ⋅ 0

C语言/C++编程学习:不做C/C++工作也要学C/C++的原因!

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你学知识 ⋅ 06/13 ⋅ 0

C语言/C++编程学习:不找C/C++的工作也要学C/C++的原因!

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 06/01 ⋅ 0

C语言/C++编程学习:输出九九乘法表

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 05/19 ⋅ 0

微软 C++ 库管理器 Vcpkg 现可用于 Linux 和 MacOS

微软已经宣布开发人员现在可以在两个新平台上访问其 C++ 库。 Vcpkg 现在可用于 Linux 和 MacOS,加入了对 Windows 和 UWP 的现有支持。 Vcpkg 是一款开源的 VC++ 打包工具。该项目于 2016 年...

达尔文 ⋅ 04/27 ⋅ 0

C语言/C++程序员编程学习自信心曲线图

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 05/10 ⋅ 0

新 Red Hat 编译器工具箱:Clang、LLVM、GCC 等

为了让开发者用到最新的、稳定版本的开发工具,Red Hat 每年会发布两次编译器工具箱、脚本语言、开源数据库等工具的更新。这些产品被封装为 Red Hat 软件集合(脚本语言、开源数据库、Web工具...

雨田桑 ⋅ 04/13 ⋅ 8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

开启Swarm集群以及可视化管理

在搭建的两台coreos服务器上开启swarm集群 前置条件: docker均开启2375端口 同一个局域网内 主服务器上安装Portainer容器 安装Portainer容器执行: docker run -d -p 9000:9000 --restart=a...

ykbj ⋅ 19分钟前 ⋅ 0

单例设计模式

1、单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 2、饿汉式单例类 在这个类被加载时,静态变量instance会被初始化,此时类的私有构造子会被调用 饿汉式是典型...

职业搬砖20年 ⋅ 24分钟前 ⋅ 0

前端基础(四):前端国际规范收集

字数:1142 阅读时间:5分钟 前言 由于前端技术的灵活性和杂乱性,导致网上的许多解决方案不够全面甚至是完全错误,容易起到误导作用。所以,我对搜索到的解决方案往往是存疑态度。那么,如何...

老司机带你撸代码 ⋅ 26分钟前 ⋅ 0

Failed to open/create Network-VirtualBox Host-Only

虚拟机版本 : Oracle Vm VirtualBox 5.2.12 报错时机:开网卡二,重启虚拟机报错 "Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Ada......

p至尊宝 ⋅ 29分钟前 ⋅ 0

三分钟学会如何在函数计算中使用 puppeteer

摘要: 使用 puppeteer 结合函数计算,可以快速的构建弹性的服务完成各种功能,包括:生成网页截图或者 PDF、高级爬虫,可以爬取大量异步渲染内容的网页、模拟键盘输入、表单自动提交、登录网...

阿里云云栖社区 ⋅ 33分钟前 ⋅ 0

springMVC接收表单时 Bean对象有Double Int Char类型的处理

前台ajax提交表单price为double类型 后台controller就介绍不到 400错误 前台 实体类: public class ReleaseMapIconConfig{ private String id; private long maxValue; private long minVal......

废柴 ⋅ 35分钟前 ⋅ 0

ZOOKEEPER安装

工作需要在ubuntu上配置了一个zookeeper集群,有些问题记录下来。 1. zookeeper以来java,所以首先要安装java。但是ubuntu系统有自带的jdk,需要通过命令切换java版本: $ sudo update-alter...

恰东 ⋅ 38分钟前 ⋅ 0

linux 进程地址空间的一步步探究

我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。 那虚拟内存空间...

HelloRookie ⋅ 38分钟前 ⋅ 0

myatis #{}与${}区别及原理

https://blog.csdn.net/wo541075754/article/details/54292751

李道福 ⋅ 41分钟前 ⋅ 0

三分钟学会如何在函数计算中使用 puppeteer

摘要: 使用 puppeteer 结合函数计算,可以快速的构建弹性的服务完成各种功能,包括:生成网页截图或者 PDF、高级爬虫,可以爬取大量异步渲染内容的网页、模拟键盘输入、表单自动提交、登录网...

猫耳m ⋅ 42分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部