库:/usr/lib64/libmysqlclient.so.#.#...  头文件:/usr/lib64/mysql/mysql.h

一、建立连接

  • MYSQL *mysql_init(MYSQL *);  用于初始化连接句柄,通常以NULL作为参数,执行成功则返回一个指向新分配的连接句柄结构的指针,失败返回NULL
  • MYSQL *mysql_real_connect(
    • MYSQL *connection,           基于mysql_init初始化的结构指针,连接Mysql服务器,成功返回connection指针,失败返回NULL
    • const char *server_host,        server_host可以是主机名或IP地址
    • const char *sql_user_name,        Mysql用户名称
    • const char *sql_password,        Mysql登陆密码
    • const char *db_name,          目标数据库名称
    • unsigned int port_number,         默认0
    • const char *unix_socket_name,      默认NULL
    • unsigned int flags);             默认0,可传递CLIENT_FOUND_ROWS等参数,改变默认行为
  • void mysql_close(MYSQL *connection);  关闭连接,释放资源
  • int mysql_options(MYSQL *connection, enum option_to_set, const cahr *argument);  仅能在mysql_init和mysql_real_connect之间执行,且每次只能设置一个选项,多选项设置须多次调用,成功返回0,失败返回非0,常用于设置连接超时时间——使用枚举项MYSQL_OPT_CONNECT_TIMEOUT

二、错误处理

  • unsigned int mysql_errno(MYSQL *connection);    返回错误码
  • char *mysql_error(MYSQL *connection);        返回文本形式的错误信息

三、执行SQL语句

1、不返回数据的SQL语句

  • int mysql_query(MYSQL *connection, const char *query);    第二个参数接收字符串数组,用于包含不带分号的SQL语句,成功返回0
  • my_ulonglong mysql_affected_rows(MYSQL *connection);     返回SQL语句实际修改的行数,非匹配到的行数,若没有行受到影响,则返回0

2、标记插入的位置

  • SQL中的LAST_INSERT_ID()函数用于标记当前客户端连接的最后插入的由AUTO_INCREMENT产生的ID数字

3、返回数据的SQL语句

  • MYSQL_RES *mysql_store_result(MYSQL *connection);    一次提取所有数据,失败返回NULL
  • MYSQL_RES *mysql_use_result(MYSQL *connection);      一次提取一行数据,失败返回NULL
  • my_ulonglong mysql_num_rows(MYSQL_RES *result);      返回mysql_store/use_result函数提取到的行数,若没有返回行,则返回0
  • MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);      逐行从mysql_store/use_result返回的结果中提取数据,存放至一个行数据结构体中,用于后续处理,数据用完或发生错误时返回NULL
  • void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset);  仅能与mysql_store_result函数搭配使用,用于设置下一次将被mysql_fetch_row函数操作的行号,offset的取值范围为0至结果集的总行数减1
  • MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result);     仅能与mysql_store_result函数搭配使用,
  • MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET offset);  仅能与mysql_store_result函数搭配使用,
  • void mysql_free_result(MYSQL_RES *resuslt);  清理已操作完成的对象

4、处理返回的数据

  • unsigned int mysql_field_count(MYSQL *connection);  返回提取到的数据集的字段数目
  • MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result);  按单一字段提取元数据——表名称、字段名称、字段数据类型、字段定义的标志(如NULL、PRIMARY KEY等) ,存放至一个字段结构体(包含各项元数据)中,数据用完或发生错误返回NULL
  • STRUCT MYSQL_FIELD {
    char *name;  字段名称
    char *table;  所属表的名称
    char *def;
    enum enum_field_types type;  字段类型:FIELD_TYPE_DECIMAL/LONG/STRING/VAR_STRING等
    unsigned int length;  定义表时指定的字段宽度
    unsigned int max_length;  仅在使用mysql_store_result时有效,表示结果集中以字节为单位的最长字段值的长度
    unsigned int flags;  字段定义的标志,如:AUTO_INCREMENT_FLAG、BINARY_FLAG等
    unsigned int decimals;  小数位数,仅对数字字段有效;IS_NUM宏可用于判断字段类型是否为数字,是则返回true
    };
  • MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset);  类同mysql_row_seek,用于设定某一行内的字段偏移

四、示例程序

  ...

[14]APUE:API for Mysql的更多相关文章

  1. Mysql高手系列 - 第14篇:详解事务

    这是Mysql系列第14篇. 环境:mysql5.7.25,cmd命令中进行演示. 开发过程中,会经常用到数据库事务,所以本章非常重要. 本篇内容 什么是事务,它有什么用? 事务的几个特性 事务常见操 ...

  2. Ubuntu Server 14.04 --secure-file-priv error in MySql 解决方案

    在VPS部署Ubuntu 14.04服务器时,MySQL执行导出文件命令,报错: The MySQL server is running with the --secure-file-priv opt ...

  3. 笔记:linux下mysql设置utf-8编码方法

    一:查看mysql版本 1.1 mysql –V 在终端界面输入上面命令.显示如下: mysql Ver 14.14 Distrib 5.5.35, fordebian-linux-gnu (x86_ ...

  4. Python自动化 【第十二篇】:Python进阶-MySQL和ORM

    本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 外键 增删改查表 权限 事务 索引 python 操作mysql ORM sql ...

  5. AngularJS快速入门指南15:API

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  6. 转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...

  7. [译] 企业级 OpenStack 的六大需求(第 1 部分):API 高可用、管理和安全

    全文包括三部分: 第一部分:API 高可用和管理以及安全模型 第二部分:开放架构和混合云兼容 第三部分:弹性架构和全球交付 引言 OpenStack 是构造企业级私有云的非常理想的基础.它立志成为新一 ...

  8. coreseek实战(二):windows下mysql数据源部分配置说明

    coreseek实战(二):windows下mysql数据源部分配置说明 关于coreseek在windows使用mysql数据源的配置,以及中文分词的详细说明,请参考官方文档: mysql数据源配置 ...

  9. 一场完美的“秒杀”:API加速的业务逻辑

    清晨,我被一个客户电话惊醒,客户异常焦急,寻问CDN能不能帮助他们解决“秒杀”的问题,他们昨天刚刚进行了“整点秒杀活动”,结果并发量过大,导致服务宕机,用户投诉. 为了理清思路,我问了对方三个问题: ...

随机推荐

  1. 基础课(一)Cisco Packet Tracer Student模拟器简单的运用

    一.相同设备之间用交叉线,不同设备之间用直通线 如上图中的简单的两个PC机相连,交叉线相连的两个PC机是能ping同,直通线相连的两台PC机不通,ipconfig可以查看本机设备的网络配置 time= ...

  2. DUBBO+Zookeeper在Centos7中本地搭建及小案例

    环境: 1.centos7 2.jdk-7u76-linux-x64.tar.gz 2.tomcat:apache-tomcat-7.0.59.tar.gz 3.zookeeper-3.4.6.tar ...

  3. input限制字符长度 - composition

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 笨办法学Python记录--习题37 异常,lambda,yield,转义序列

    习题中提到了raise,查了下,顺便所有异常类关键字罗列如下文章中: 为什么使用异常 错误处理.事件通知.特殊情况处理.退出时的行为.不正常的程序流程. 简单的示例 在没有任何定义x变量的时候: pr ...

  5. SVG和canvas

    1.SVG实现的圆环旋转效果 参考:http://www.softwhy.com/article-6472-1.html 2.SVG中的图形可以通过  transform="matrix(0 ...

  6. Windows 安装 Anaconda3+PyCharm

    由于本人使用的是windows 10 操作系统,所以介绍在 windows 10 系统中安装 Anaconda3 的过程. 下载 Anaconda 官网下载地址:https://www.anacond ...

  7. centos7.4 系统优化

    static 表示该服务与其他服务相关联,不能单独设置该服务的启动状态 disabled 表示禁止开机启动 enabled 表示允许开机启动 auditd.service enabled autovt ...

  8. MacOS安装npm全局包的权限问题

    MacOS,安装npm全局包提示没有写入权限: npm WARN checkPermissions Missing write access to /usr/local/lib/node_module ...

  9. java-day20

    注解:说明程序的,给计算机看的 注释:用文字描述程序的,给程序员看的 定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性.与类.接口.枚举是在 ...

  10. Promise 的深度学习

    1.Promise 是什么? Promise 是异步编程的一种解决方案,比传统的解决方案–回调函数和事件--更合理和更强大.Promise ,简单说就是一个容器,里面保存着某个未来才回结束的事件(通常 ...