以下函数使用之前需安装mysql,并包含mysql.h头文件,设置好mysqlclient动态库

一、mysql_init()

  1. MYSQL * mysql_init(MYSQL *mysql); // 初始化一个MYSQL 连接的实例对象
  1. 这个函数有两种用法:
  2. 、参数传NULL 值。
  3. // 这种情况很显然,是mysql_init() 函数内部申请了一片内存,然后返回了首地址。
  4. MYSQL *ms_conn = mysql_init(NULL);
  5. // 用完记得要释放
  6. mysql_close(ms_conn), ms_conn = NULL;
  7.  
  8. 、参数传对象地址。
  9. // 这种情况就是使用栈内存,mysql_init() 函数显然不应该给分配堆内存。
  10. MYSQL ms_eg;
  11. MYSQL *ms_conn = mysql_init(&ms_eg);
  12. // 用完记得要释放
  13. mysql_close(ms_conn), ms_conn = NULL;

二、mysql_real_connect()

  1. #include<mysql.h>
  2. 函数原型描述:
  3. MYSQL *mysql_real_connect (MYSQL *mysql,  //mysql_init()函数初始化获得的mysql实例对象
  4. const char *host,                //主机名或IP地址
  5. const char *user,                //登录mysql的用户名
  6. const char *passwd,               //登录mysql的密码
  7. const char *db,                 //设置连接指定的的数据库
  8. unsigned int port,               //端口,如果“port”不是0,其值将用作TCP/IP连接的端口号
  9. const char *unix_socket,           //如果unix_socket不是NULL,该字符串描述了应使用的套接字或命名管道
  10. unsigned long client_flag)          //client_flag的值通常为0,但是,也能将其设置为下述标志的组合,以允许特定功能
  11.  
  12. //一些个标志

  标志描述 CLIENT_COMPRESS

  使用压缩协议。 CLIENT_FOUND_ROWS

  返回发现的行数(匹配的),而不是受影响的行数。 CLIENT_IGNORE_SPACE

  允许在函数名后使用空格。使所有的函数名成为保留字。 CLIENT_INTERACTIVE

  关闭连接之前,允许interactive_timeout秒的不活动时间。 CLIENT_LOCAL_FILES

  允许LOAD DATA LOCAL处理功能。 CLIENT_MULTI_STATEMENTS

  通知服务器,客户端可能在单个字符串内发送多条语句。 CLIENT_MULTI_RESULTS

  通知服务器,客户端能够处理来自多语句执行。 CLIENT_NO_SCHEMA

  禁止db_name.tbl_name.col_name语法。 CLIENT_ODBC

  客户端是ODBC客户端。它将mysqld变得更为ODBC友好。 CLIENT_SSL

  1.  
  2. 如果连接成功,返回MYSQL*连接句柄。如果连接失败,返回NULL。对于成功的连接,返回值与第1个参数的值相同。
  3.  
  4. 用法:
  1. MYSQL *ms_conn = mysql_init(NULL);
    if(mysql_real_connect(ms_conn,"localhost","user_name","user_password"
                ,"testdb",0,NULL,0)==nullprt){
      std::cout<<"mysql real_connect failed!"<<std::endl;
      mysql_close(ms_conn);
    }

三、mysql_query()

  1. 函数原型描述:
  2. int mysql_query(MYSQL *mysql,const char *q) //执行*q的sql语句,结果返回至mysql,失败返回非0
    用法:
      std::string sql("select name,password from user;");
      if(mysql_query(ms_conn,sql.c_str())){
        //执行失败
        std::cout<<"query failed "<<mysql_error(&ms_conn)<<std::endl;
      }

四、mysql_store_result()

  1. 函数原型描述
  2. MYSQL_RES *mysql_store_result(MYSQL *mysql)  //将查询的全部结果读取到客户端,分配1个MYSQL_RES结构,并将结果置于该结构中 如果查询失败,返回null指针
    用法:
      MYSQL_RES* result=mysql_store_result(ms_conn);
      if(result==nullptr){
        std::cout<<"mysql_store_result failed "<<mysql_error(ms_conn)<<std::endl;
      }

五、mysql_use_result()

  1. 函数原型描述:
  2. MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql); //逐条进行查询,逐条将结果返回给客户端 当每条记录的数据特别大,不适用mysql_store_result()时使用
    用法:
        MYSQL_RES *result = mysql_use_result(mysql);
      if(result){
         while(row = mysql_fetch_row(result))
            {
                //row = mysql_fetch_row(result);
                if(row==NULL)
                    break;
                for(t=0;t<mysql_num_fields(result);++t)
                    printf("%s ",row[t]);
                printf("\n");
            }
      }

六、mysql_fetch_row()

  1.  
  1. 函数原型描述:
  2. MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result); //从结果集中取得下一行数据
    用法:
       //typedef char **MYSQL_ROW;        /* return data as array of strings */ mysql.h定义的MYSQL_ROW原型
       MYSQL_ROW row = mysql_fetch_row(result);    
       if(row){
         std::cout<<"row.name="<<row[0]<<std::endl;
         std::cout<<"row.password="<<row[1]<<std::endl;
       }
    更常用一点的用法
      while(row = mysql_fetch_row(result))
      {
        std::cout<<"row.name="<<row[0]<<std::endl;
        std::cout<<"row.password="<<row[1]<<std::endl;
      }
  1.  

七、mysql_num_fields() 和mysql_num_rows()

  1. mysql_num_fields()函数原型描述
  2. unsigned int STDCALL mysql_num_fields(MYSQL_RES *result);  //获取结果集中的列的数量
  1. mysql_num_rows()函数原型描述
  2. unsigned int STDCALL mysql_num_rows(MYSQL_RES *result);  //获取结果集中的行的数量

八、mysql_fetch_row()

  1. 函数原型:
  2. unsigned int STDCALL mysql_field_count(MYSQL *mysql);  //返回最近查询的结果列的数量。
    用法:
      int sql_num=mysql_field_count(ms_conn);

九、mysql_list_fields()

  1. 函数原型描述:
  2. MYSQL_RES * STDCALL mysql_list_fields(MYSQL *mysql, const char *table, const char *wild);  //返回匹配一个简单的正则表达式的列名。
    用法:
      MYSQL_RES *tbl_cols = mysql_list_fields(ms_conn, "mytbl", "f%");
      unsigned int field_cnt = mysql_num_fields(tbl_cols);
      for (int i=0; i < field_cnt; ++i) { /* col describes i-th column of the table */
        MYSQL_FIELD *col = mysql_fetch_field_direct(tbl_cols, i);
        printf ("Column %d: %s\n", i, col->name);
      }

十、mysql_fetch_field_direct()

  1. 函数原型描述
  2. MYSQL_FIELD *STDCALL mysql_fetch_field_direct(MYSQL_RES *res,unsigned int fieldnr);  //返回一个表字段的类型,给出一个字段编号。 
    用法:
      unsigned int num_fields; unsigned int i;
      MYSQL_FIELD *field; num_fields = mysql_num_fields(result);
      for(i = 0; i < num_fields; i++) {
        field = mysql_fetch_field_direct(result, i);
        printf("Field %u is %s\n", i, field->name);
      }

十一、mysql_eof()

  1. 函数原型描述
  2. my_bool STDCALL mysql_eof(MYSQL_RES *res);  //确定是否已经读到一个结果集合的最后一行
    用法
      mysql_query(&mysql,"SELECT * FROM some_table");
      result = mysql_use_result(&mysql);
      while((row = mysql_fetch_row(result))) {
        // do something with data
      }
      if(!mysql_eof(result)) // mysql_fetch_row() failed due to an error
      {
        fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
      }

十二、mysql_error()

  1. 函数原型描述
  2. const char * STDCALL mysql_error(MYSQL *mysql);  //返回最近被调用的MySQL函数的出错消息
    用法
      if(*mysql_error(&mysql)) {
      // an error occurred
      }
      if(mysql_error(&mysql)[0]) {
      // an error occurred
      }

十三、mysql_free_result()

  1. 函数原型描述
  2. void STDCALL mysql_free_result(MYSQL_RES *result);  //释放一个结果集合使用的内存。
    用法:
      mysql_free_result(ms_conn)

十四、MYSQL_RES 结构体

  1. 数据原型:
  2. typedef struct st_mysql_res {
  3.   my_ulonglong row_count;
  4.   MYSQL_FIELD *fields;
  5.    MYSQL_DATA *data;
  6.    MYSQL_ROWS *data_cursor;
  7.    unsigned long *lengths; /* column lengths of current row */
  8.    MYSQL *handle; /* for unbuffered reads */
  9.    const struct st_mysql_methods *methods;
  10.    MYSQL_ROW row; /* If unbuffered read */
  11.    MYSQL_ROW current_row; /* buffer to current row */
  12.    MEM_ROOT field_alloc;
  13.    unsigned int field_count, current_field;
  14.    my_bool eof; /* Used by mysql_fetch_row */
  15.    /* mysql_stmt_close() had to cancel this result */
  16.    my_bool unbuffered_fetch_cancelled;
  17.    void *extension;
  18. } MYSQL_RES;

本文链接:https://www.cnblogs.com/socks/p/13084027.html

centos 7 c++连接mysql的常用函数说明及使用样例的更多相关文章

  1. MYSQL基本常用函数

    MYSQL基本常用函数 一.字符的操作函数 (ps:mysql中的索引都是从1开始的.) 1.instr(param1,param2) 返回子串第一次出现的索引,若找不到则返回0. param1填写操 ...

  2. MySQL之常用函数

    MySQL有如下常用函数需要掌握: 1.数学类函数 函数名称 作用 ABS(x)   返回x的绝对值                      SQRT(x)   返回x的非负二次方根 MOD(x,Y ...

  3. mysql中常用函数简介(不定时更新)

    常用函数version() 显示当前数据库版本database() 返回当前数据库名称user() 返回当前登录用户名inet_aton(IP) 返回IP地址的数值形式,为IP地址的数学计算做准备in ...

  4. php连接mySql,加密函数

    连接MySQL mysql_connect(servername,username,password); 面向对象: <?php $servername = "localhost&qu ...

  5. 函数指针使用演示样例(參考Linux-内核代码)

    本文有xhz1234(徐洪志)编写,转载请注明出处. http://blog.csdn.net/xhz1234/article/details/36635083 作者:徐洪志 近期阅读Linux-内核 ...

  6. MySQL数据库常用函数

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 不区分大小写 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等 ...

  7. PHP操作MySQL的常用函数

    某些情况下(如html中),调用php的变量时,要给变量加{},若要使字符串变量加上引号,则还需要在{}外加引号 如: $sql="select * from admin where use ...

  8. MySQL数据库------常用函数

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. [1]ABS(x)        返回x的绝对值 例子:SELECT ABS(-1) -- 返回1 [2]CEIL(x),CEILING( ...

  9. MySQL 数据库 常用函数

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 ...

随机推荐

  1. 一个学习 Koa 源码的例子

    作者: MarkLin 学习目标: 原生 node 封装 中间件 路由 Koa 原理 一个 nodejs 的入门级 http 服务代码如下, // index.js const http = requ ...

  2. 【雕爷学编程】Arduino动手做(44)---类比霍尔传感器

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  3. Centos7安装jupyter notebook

    安装python3 查看当前python版本 [root@iz1i4qd6oynml0z /]# python -V Python 2.7.5 安装python3以及检查python3的版本 yum ...

  4. Python的第三方web开发框架Django

    1.Django Django是一个基于Python的第三方Web应用开发框架,可以简化Web开发. 官网:https://www.djangoproject.com/ 主要特点: ①采用MVC模型变 ...

  5. Pyqt5_QWidget

    QWidget常用方法: Qwidget.size()#获得客户区的大小 QWidget.width().QWidget.height()#获得客户区的宽度与高度 #设置不可以变宽.高 QWidget ...

  6. Java——动态生成POJO类

    package com.java.test.dynamicpojo; import java.io.ByteArrayOutputStream; import java.io.IOException; ...

  7. Python中对文件的读写

    读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘. 读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系 ...

  8. Maven系列(二) -- 将开源库上传到maven仓库私服

    前言 之前简单说了下Maven的搭建,现在跟大家说一下如何将自己的aar传到我们新搭建的maven仓库里面,接下来我们就从最基本的新建一个library开始讲述整个流程,话不多说,让我们把愉快的开始吧 ...

  9. Emiya家今天的饭 NOIP2019 (CSP?) 类DP好题 luoguP5664

    luogu题目传送门! 首先,硬求可行方案数并不现实,因为不好求(去年考场就这么挂的,虽然那时候比现在更蒟). 在硬搞可行方案数不行之后,对题目要求的目标进行转换: 可行方案数 = 总方案数 - 不合 ...

  10. 选择器&隔行换色

    选择器的使用理解为:执行jQuery核心函数,传入选择器的字符串    $( ... ) 基本选择器 <!DOCTYPE html> <html> <head> & ...