zoukankan      html  css  js  c++  java
  • [14]APUE: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,用于设定某一行内的字段偏移

    四、示例程序

      ... 

  • 相关阅读:
    Node+OBS直播服务器搭建总结
    WebRTC网页录制音视频教程
    人生有尺 做人有度
    「道 德 經」 : 第 二 十 四 章
    看山是山,看水是水;看山不是山,看水不是水;看山还是山,看水还是水。
    「道 德 经」 : 第 八 章
    Ubuntu下安装Chrome浏览器的两个方法
    chromium中增加自己的文件夹
    chromium 切换主分支的方法
    chromium 示例
  • 原文地址:https://www.cnblogs.com/hadex/p/5965476.html
Copyright © 2011-2022 走看看