linux下使用C++操作mysql

文章目录

  • linux下使用C++操作mysql
    • 一、常用类型介绍
      • 1. MYSQL
      • 2. MYSQL_ROW
      • 3. MYSQL_FIELD
      • 4. MYSQL_RES
    • 二、常用函数介绍
      • 1. mysql_init()
      • 2. mysql_real_connect()
      • 3. mysql_query()
      • 4. mysql_store_result()
      • 5. mysql_num_rows()
      • 6. mysql_num_fields()
      • 7. mysql_fetch_field()
      • 8. mysql_fetch_row()
      • 9. mysql_fetch_field_direct()
      • 10.mysql_free_result()
      • 11.mysql_set_character_set()
      • 12. mysql_close()

一、常用类型介绍

1. MYSQL

用于定义一个mysql对象,便于后续操作确定要操作的数据库是哪一个。

MYSQL mysql;  //mysql标记对应某个数据库

2. MYSQL_ROW

用于定义一个行对象,其内容含有一行的数据。

MYSQL_ROW row;  //row[i]可用于输出该行第i个字段的数据

3. MYSQL_FIELD

用于定义一个存储字段信息的对象。

MYSQL_FIELD *field;  //field->name存储对应字段名称

4. MYSQL_RES

用于定义一个存储数据库检索信息结果的对象。

MYSQL_RES *result;

二、常用函数介绍

其实在操作mysql数据库时,最常使用的函数有以下几个:

1. mysql_init()

用于初始化一个MYSQL对象,来连接mysql服务端。

//原型
MYSQL *mysql_init( MYSQL *mysql );//example
MYSQL mysql;
mysql_init( &mysql );

2. mysql_real_connect()

用于连接数据库

//原型
MYSQL *mysql_real_connect (MYSQL *mysql,   //初始化的MYSQL对象,与mysql_init()对应,就是mysql操作具柄const char *host,   //主机地址,链接mysql所在的IPconst char *user,   //用户,就是拿那个用户身份登陆mysql,例如:rootconst char *passwd,   //数据库的密码...const char *db,   //要连接的数据库,例如:studentunsigned int port,   //端口,一般为3306const char *unix_socket,   //一般为NULLunsigned long client_flag);  //一般为0//example
if(mysql_real_connect( &mysql, "localhost", "root", "mypasswd", "student", 0, NULL, 0 ) == NULL)
{printf("链接失败!%s\n",mysql_error(&mysql));
}

3. mysql_query()

用于执行mysql命令。其参数应使用c风格字符串。

//原型
int mysql_query( MYSQL *mysql, char * command );//example
string command = "select * from info";
int ret = mysql_query( &mysql, command.c_str() );
if(ret < 0)
{printf("出错了!%s\n",mysql_error(&mysql));
}

4. mysql_store_result()

用于获取mysql操作的检索结果。

//原型
MYSQL_RES *mysql_store_result(MYSQL *mysql);//example
MYSQL_RES *result;
result = mysql_store_result( &mysql );

5. mysql_num_rows()

用于获取结果集的行数。

//原型
int mysql_num_rows( MYSQL_RES *result );int rows = mysql_num_rows(result )

6. mysql_num_fields()

用于获取结果集的字段数(列数)。

//原型
int mysql_num_fields( MYSQL_RES *result );//example
int fields;
fields = mysql_num_fields( result );

7. mysql_fetch_field()

用于获取下一个字段的类型。

//原型
MYSQL_FIELD* mysql_fetch_field(MYSQL_RES *result);

8. mysql_fetch_row()

从结果集中获取下一行,调用一次获取一行数据,结束返回NULL。

//原型
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result); //example
MYSQL_ROW row;
while( row = mysql_fetch_row( result ), row != NULL ) {for( int i = 0; i < num; i++ ) {cout << row[i] << "\t\t";}cout << endl;
}

9. mysql_fetch_field_direct()

给定字段序号,返回字段类型,结束返回NULL。

MYSQL_FIELD* mysql_fetch_field_direct(MYSQL_RES *result, int i); //example
int num = mysql_num_fields( result );  //返回字段个数
for( int i = 0; i < num; i++ ) {field = mysql_fetch_field_direct( result, i );  //返回字段类型cout << field->name << "\t\t";  //输出字段名
}
cout << endl;

10.mysql_free_result()

释放结果结合

mysql_free_result(MYSQL_RES *result);

11.mysql_set_character_set()

设置编码方式

//原型
mysql_set_character_set(MYSQL *mysql,const char* csname)mysql_set_character_set(connect_fd,"utf8");

12. mysql_close()

用于关闭连接。

mysql_close( MYSQL *mysql );

#include <iostream>
#include <string>
#include <mysql/mysql.h>
using namespace std;class MysqlDB {private:MYSQL mysql;MYSQL_ROW row;MYSQL_RES *result;MYSQL_FIELD *field;
public:MysqlDB() {if( mysql_init( &mysql ) == NULL ) {cout << "init error, line: " << __LINE__ << endl;exit(-1);}}~MysqlDB() {mysql_close( &mysql );}void connect( string host, string user, string passwd,  string database ) {if( !mysql_real_connect( &mysql, host.c_str(), user.c_str(), passwd.c_str(), database.c_str(), 0, NULL, 0 ) ) {cout << "connect error, line: " << __LINE__ << endl;exit(-1);}}void add();void print();
};void MysqlDB::add()
{string id, name, sex, birthday;do {cout << "请输入学生信息:\n";cin >> id >> name >> sex >> birthday;string sql = "insert into info values('" + id + "', '" + name + "', '" + sex + "', '" + birthday + "');";mysql_query( &mysql, sql.c_str() );cout << "是否继续(y/n): ";cin >> id;} while( id == "y" );
}void MysqlDB::print()
{// string sql = "select * from info where name = '" + name + "';";  //要有''string sql = "select * from info;";mysql_query( &mysql, sql.c_str() );result = mysql_store_result( &mysql );if( !result ) {cout << "result error, line : " << __LINE__ << endl;return ;}int num = mysql_num_fields( result );  //返回字段个数for( int i = 0; i < num; i++ ) {field = mysql_fetch_field_direct( result, i );  //返回字段类型cout << field->name << "\t\t";  //输出字段名}cout << endl;while( row = mysql_fetch_row( result ), row ) {for( int i = 0; i < num; i++ ) {cout << row[i] << "\t\t";}cout << endl;}
}int main()
{MysqlDB db;db.connect( "localhost", "root", "niliushall", "student" ); db.print();db.add();db.print();return 0;
}

linux下使用C++操作mysql相关推荐

  1. linux下使用python操作mysql

    linux下使用python操作mysql 文章目录 linux下使用python操作mysql 一.Python 中MySQL的几个模块对象 1.模块 2.Connection 对象 3.Curso ...

  2. linux下c语言调用mysql,Linux下C语言操作MYSQL总结

    Linux下C语言操作MYSQL总结 发布时间:2006-12-17 00:40:00来源:红联作者:anciens 下文的用到的数据库表: 数据库中存在表table, 有name(varchar类型 ...

  3. linux下的shell操作mysql

    (1)MySQL的启动 重启了一次服务器后,使用> mysql -u root -p登陆是出现下面的错误: ERROR 2002 (HY000): Can't connect to local ...

  4. Linux下使用OTL操作mysql数据库

    首先重点推荐介绍otl介绍及用法的文章:http://www.cnblogs.com/fnlingnzb-learner/p/5835560.html 一.编写代码 注:以下代码来自OTL示例,略有改 ...

  5. linux下c语言调用mysql,Linux下C语言连接MySQL

    首先保证安装: 1:安装MySQL:sudo apt-get install mysql-server mysql-client 2:安装MySQL开发包:sudo apt-get install l ...

  6. linux下使用的mysql数据库,Linux下安装以及使用MySQL数据库

    1.官网下载mysql数据库:https://dev.mysql.com/downloads/mysql/ 2.linux 下可直接下载:wget https://cdn.mysql.com//Dow ...

  7. linux python开发环境sql数据迁移到mysql_linux环境下python怎样操作mysql数据库

    展开全部 linux环境下python怎样操作mysql数据库呢?方法如下: 首先在Linux环境下安装mysql-python 1.下载mysql-python 打开终端: cd /usr/loca ...

  8. linux php mysql.so_在linux下php挂接mysql.so扩展的方法

    总结的方向:在linux下php挂接mysql.so扩展的方法 问题背景:平常我们都是先安装mysql,然后才能去安装php.假如先安装php,后安装mysql,由于php需要连接mysql,因而在p ...

  9. 在linux下php挂接mysql.so扩展的方法

    总结的方向:在linux下php挂接mysql.so扩展的方法 问题背景:平常我们都是先安装mysql,然后才能去安装php.假如先安装php,后安装mysql,由于php需要连接mysql,因而在p ...

最新文章

  1. ZOJ 3829 Known Notation(贪心)
  2. 悬浮框_纯HTML实现某宝优惠券、商品列表和活动悬浮等布局(文末有源码)
  3. Codechef TRIPS Children Trips (分块、倍增)
  4. mysql 8.0 慢查询_MySQL慢查询分析
  5. Uboot分析(三)
  6. 第 5-1 课:线程与死锁 + 面试题
  7. WeixinJSBridge目前还能够直接使用的功能(2019)
  8. 帆软mysql迁移_平台数据迁移- FineReport帮助文档|报表开发|报表使用|学习教程
  9. 手机pdf文件转语音_PDF文件怎么转EXCEL?教你一款超实用的迅捷PDF转换器
  10. 每天一大杯可乐,会不会骨质酥松哇?
  11. OpenGL学习笔记:矩阵变换
  12. 产品经理入职新公司要做什么?
  13. 开始我的WebWork之旅
  14. 蚂蚁开放平台开发第三方授权登陆(三):Android端
  15. 域名解析、域名空间绑定,两种截然不同概念
  16. 《调色师手册:电影和视频调色专业技法(第2版)》——调色所需的其他硬件...
  17. VB学习过程(二)VB的语法基础和常用的内部函数
  18. poi ppt转换为html,实现在线预览
  19. 机房UPS主机及电池该如何搬迁
  20. 基础·FlashCS5将库的素材定义为类

热门文章

  1. 逃离裁员:程序员在云时代的生存之道
  2. Leetcode PHP题解--D5 804. Unique Morse Code Words
  3. 超详细 Spring Boot 知识清单
  4. NIO - Selector源码分析
  5. 电脑无故弹出yyy102.html网页的解决办法(没办法,今天中招了)
  6. html js页面传参
  7. webpack2.x 中文文档 翻译 之 出口Output
  8. Linux下tar.xz结尾的文件的解压方法
  9. C#基础(Day08)
  10. ▲为什么要用css Sprite技术?