文档章节

linux下C++连接mysql

suprock
 suprock
发布于 2015/04/20 07:24
字数 370
阅读 23
收藏 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
海淀
程序员
make && make install

使用eclipse 创建C++项目,daemon service 程序。 编译时,eclipse自动生成的makefile: ################################################################################ # Automatical......

JORDANSG
2012/12/11
0
0
Linux C++、Boost、ACE ......

Linux/UNIX、C++、Boost、ACE、Shell ...... Linux/UNIX C++高级培训---远程班 培养目标:Linux/UNIX C++高级软件工程师 专注Linux/UNIX服务器端的软件开发(后台开发),培养企业所需的专业...

athxy
2010/04/01
0
1
WinSocket同时接入量的疑惑(求解...)

在写TCP应用的时候一般都通过Accept来接入连接的接入,但对于Socket来说这个Accept同时能处理多大的量一般都没有明确说明,在应用中主要根据自己的需要设置Listen的队列数量.那Listen(1000)是不...

泥水佬
2013/12/22
0
1
GCC G++ C C++的区别(转载)

gcc 是c的编译器,g++是c++的编译器。cc一般是一个符号连接,指向gcc。 CC一般是makefile里面的一个名字,具体是什么根据实际情况决定。 gcc和g++都是GNU(组织)的一个编译器。 误区一:gcc只能...

Failure
2013/03/17
0
0
c语言基础学习11_项目实战:IDE(集成开发环境)

============================================================================= ============================================================================= 涉及到的知识点有: 一......

黑泽明军
01/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
36分钟前
0
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
1
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
83
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
3
0
我为什么用GO语言来做区块链?

Go语言现在常常被用来做去中心化系统(decentralised system)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。 我们在决定做Karachain的时候,考量(b...

HiBlock
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部