文档章节

linux下C++连接mysql

suprock
 suprock
发布于 2015/04/20 07:24
字数 370
阅读 24
收藏 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

共有 人打赏支持
上一篇: 数据结构1
下一篇: lua链表的实现
suprock
粉丝 3
博文 12
码字总数 3797
作品 0
海淀
程序员
私信 提问
Linux开放实验室

简介 为方便广大Linux软件开发爱好者,轩辕高端IT培训中心于2009年10月设立了Linux开放实验室,轩辕Linux开放实验室提供了完整的 Linux软件开发环境,包括:Redhat Enterprise Linux 5.4、C...

athxy
2010/04/20
2K
19
支持 LINUX/WIN32 平台的网络通讯及服务器框架

acl 框架库是一个 C 库,主要包含:服务器开发框架、同步/异步网络通讯、常用数据结构、进程池/线程池、流式 xml/json 解析器、http/ping 应用协议等内容; acl_cpp 是基于 acl 库的 C++ 库,...

郑树新
2012/06/03
35
0
Linux开放实验室

简介 为方便广大Linux软件开发爱好者,轩辕高端IT培训中心于2009年10月设立了Linux开放实验室,轩辕Linux开放实验室提供了完整的 Linux软件开发环境,包括:Redhat Enterprise Linux 5.4、C...

athxy
2010/04/01
283
0
make && make install

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

JORDANSG
2012/12/11
0
0
xBlog 0.1 Beta 发布, C++开发的博客程序

欢迎使用xBlog系统 xBlog是一个C++开发的简单高速博客程序。 简单 : 设计简单小巧,主程序仅一个可执行文件.无需HTTPD,PHP等环境支持。 高速 : C++开发,多线程,采用MYSQL连接池,并支持热...

Sky
2013/10/29
1K
16

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 有一天考拉麻麻拉肚子了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享周汇洋的单曲《Man Srae(曼斯拉之舞)》:美滋滋。。。。 手机党少年们想听歌,请使劲儿戳(这里) 我听了一下 赶紧关了, ...

小小编辑
54分钟前
23
4
oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
6
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
6
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
18
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部