爱上C之:API for Mysql

库:/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,用于设定某一行内的字段偏移

四、示例程序

时间: 2024-10-29 19:11:25

爱上C之:API for Mysql的相关文章

NodeJS REST API with MySQL and Express

http://www.nodewiz.biz/nodejs-rest-api-with-mysql-and-express/ NPM Modules Express felixge/node-mysql - Source Most articles about building a REST API for NodeJS will be based on MongoDB, I'm going to show you how to do it with MySQL. Implementing th

VC++通过API连接MySQL

1.  首先安装MySQL数据库服务器,本文安装的是mysql-installer-community-5.6.10.1.msi这个版本,至于各个版本有什么不同,不在这里说明. 如下的默认安装的安装目录结构截图: 2. 接着配置环境变量,这个纯粹是要为了在命令行下使用mysql的相关命令更加方便.如 如下设置即可,有些安装包已经自动给添加上了这个路径,只需要检查一下即可. 3. 先在命令行下创建一个数据samp_db,并在创建表students.建库和建表都相对简单,如下截图是已经建好的. 创建

C API向MySQL插入批量数据的快速方法——关于mysql_autocommit

MySQL默认的数据提交操作模式是自动提交模式(autocommit).这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行.我们可以通过设置autocommit的值改变是否是自动提交autocommit模式.查询当前数据库事务提交方式的命令为: mysql> show variables like 'autocommit'; +---------------+-------+ | Variable_name | Value | +---------------+-----

Django的API操作mysql中常用的语句

[背景] 增/删/改/查 如何操作数据库 导入数据库的模型 In [23]: from blog.models import People [增加记录]--三种方法 方法一: 直接使用数据模对象的create函数 In [24]: People.objects.create(name='shuaige') Out[24]: <People: People object> 注意:创建成功返回对象地址 方法二: In [6]: record = People(name='choubaguai') 

C API 连接MYSQL

1 #include <iostream> 2 #include <mysql.h> 3 #include <string> 4 5 #include <assert.h> 6 7 8 int main() 9 { 10 // MYSQL 初始化 11 MYSQL *ms_conn = mysql_init(NULL); 12 if (ms_conn == NULL) 13 { 14 std::cout << "Error: mysql

Atitit.自定义存储引擎的接口设计&#160;api&#160;标准化&#160;attilax&#160;总结&#160;&#160;mysql

Atitit.自定义存储引擎的接口设计 api 标准化 attilax 总结  mysql 1. 图16.1:MySQL体系结构1 2. 16.7. 创建表create()虚拟函数:2 3. 16.8. 打开表 open()2 4. ---------------------------------------------------------------------------------------------------------------------2 5. 16.9. 实施基本的

数据库编程5 MySQL C API 开发

[本文谢绝转载原文来自http://990487026.blog.51cto.com] 数据库编程5 MySQL C API 开发 MySQL官方文档: MySQL  环境搭建 ubuntu搭建MySQL开发环境: MySQL服务命令 检查MySQL运行状态: MySQL SQL 登陆测试 创建一个数据库 显示数据库创建过程: 创建一个使用UTF8字符集的数据库 创建一个使用UTF8字符集的数据库,带校对规则 把数据库修改成UTF8字符集 选择数据库,创建表: 查表结构: mysql中的数据类型

mysql C语言API接口及实例

Mysql数据库动态库: libmysql.dll  libmysql.lib mysql.h  WinSock2.h Mysql API数据结构   (mysql.h) MYSQL:连接数据库前,必须先创建MYSQL变量,此变量在很多Mysql API函数会用到.它包含了一些连接信息等数据. MYSQL_RES:MYSQL_RES结构体中包含了查询结果集,也就是从数据库中查询到的数据.可以使用mysql_store_result或mysql_use_result函数获得. MYSQL_ROW:

Mysql C语言API编程入门讲解

原文:Mysql C语言API编程入门讲解 软件开发中我们经常要访问数据库,存取数据,之前已经有网友提出让鸡啄米讲讲数据库编程的知识,本文就详细讲解如何使用Mysql的C语言API进行数据库编程.  API,全称Application Programming Interfaces,即应用程序编程接口,我们可以调用这些接口,执行API函数提供的功能.  Mysql C语言API就是用C语言编写的Mysql编程接口,使用这些接口函数可以实现对Mysql数据库的查询等操作.  Mysql的安装  要进