库:/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. 工程师技术(一):启用SELinux保护、自定义用户环境、配置IPv6地址、配置聚合连接、配置firewalld防火墙

    一.启用SELinux保护 目标: 本例要求为虚拟机 server0.desktop0 配置SELinux: 确保 SELinux 处于强制启用模式 在每次重新开机后,此设置必须仍然有效 方案: SE ...

  2. SpringBoot整合MongoDB,在多数据源下实现事务回滚。

    项目中用到了MongoDB,准备用来存储业务数据,前提是要实现事务,保证数据一致性,MongoDB从4.0开始支持事务,提供了面向复制集的多文档事务特性.能满足在多个操作,文档,集合,数据库之间的事务 ...

  3. NX二次开发-自定义添加右键菜单RegisterConfigureContextMenuCallback

    首先声明这个知识我以前不知道,是夏天的时候看到别人在唐工的QQ群里问的,唐工说西门子官方有这个例子.那个时候我因为在忙其他事情,也就没去研究那个右键菜单到底是怎么做的.关于自定义添加右键菜单Regis ...

  4. 使用ionic来build安卓apk时,报CordovaError: Requirements check failed for JDK 1.8 or greater

    本地配置了JDK和jre的本地环境变量之后,在命令行中运行Java.javac等都能正常输出,但是在使用ionic cordova build android 来打包ionic的程序时,会提示 Cor ...

  5. Installing GCC 简单方法

    Installing GCC This page is intended to offer guidance to avoid some common problems when installing ...

  6. PAT_A1088#Rational Arithmetic

    Source: PAT A1088 Rational Arithmetic (20 分) Description: For two rational numbers, your task is to ...

  7. 详解Telecom

    学习目标: 掌握Telecom入口和分析方法 总结和演进Telecom交互模型 掌握Listener消息回调机制 学习CallsManager 为什么选择Telecom分析? 这是由于在Android ...

  8. Feign 系列(03)Feign 工作原理

    目录 Feign 系列(03)Feign 工作原理 1. Feign 是如何设计的 2. Feign 动态代理 2.1 ReflectiveFeign 构建 2.2 生成代理对象 2.3 Method ...

  9. iptables简介及常用命令

    相关文件 iptables服务配置文件 -rw-------. 1 root root 2374 9月 4 2017 /etc/sysconfig/iptables-config iptables规则 ...

  10. Install .NET Core Runtime on Linux Ubuntu 16.04 x64

    原文链接https://www.microsoft.com/net/download/linux-package-manager/ubuntu16-04/runtime-current nstall ...