mysql C/C++ 常用API基础记录

9 篇文章 0 订阅

包含头文件:"mysql.h"

1 数据类型:
MYSQL:
该结构代表1个数据库连接的句柄。几乎所有的MySQL函数均使用它。不应尝试拷贝MYSQL结构。不保证这类拷贝结果会有用。

MYSQL_RES:
该结构代表返回行的查询结果(SELECT, SHOW, DESCRIBE, EXPLAIN)。在本节的剩余部分,将查询返回的信息称为“结果集”。

MYSQL_ROW
这是1行数据的“类型安全”表示。它目前是按照计数字节字符串的数组实施的。(如果字段值可能包含二进制数据,不能将其当作由Null终结的字符串对待,这是因为这类值可能会包含Null字节)。行是通过调用mysql_fetch_row()获得的。

常用数据类型就这三个。

2 API函数

1)MYSQL* mysql_init(MYSQL* mysql);
该函数用于初始化MYSQL结构,必须在任何mysql库函数前调用
参数为NULL时,将自动分配空间并初始化对象,返回mysql对象指针。
参数不为NULL时,初始化对象,返回mysql对象指针。

2)int mysql_options(MYSQL* mysql,enum mysql_option,const void* arg);
该函数用于设置mysql的一些属性,在mysql_init()函数后调用。
一般用于设置系统编码:
例如:mysql_options(sql, MYSQL_SET_CHARSET_NAME, “gbk”);
arg参数的值取决于mysql_option的值
mysql_option的值可以是:
MYSQL_OPT_CONNECT_TIMEOUT,
MYSQL_OPT_COMPRESS,
MYSQL_OPT_NAMED_PIPE,
MYSQL_INIT_COMMAND,
MYSQL_READ_DEFAULT_FILE,
MYSQL_READ_DEFAULT_GROUP,
MYSQL_SET_CHARSET_DIR,
MYSQL_SET_CHARSET_NAME,
MYSQL_OPT_LOCAL_INFILE,
MYSQL_OPT_PROTOCOL,
MYSQL_SHARED_MEMORY_BASE_NAME,
MYSQL_OPT_READ_TIMEOUT,
MYSQL_OPT_WRITE_TIMEOUT,
MYSQL_OPT_USE_RESULT,
MYSQL_REPORT_DATA_TRUNCATION,
MYSQL_OPT_RECONNECT,
MYSQL_PLUGIN_DIR,
MYSQL_DEFAULT_AUTH,
MYSQL_OPT_BIND,
MYSQL_OPT_SSL_KEY,
MYSQL_OPT_SSL_CERT,
MYSQL_OPT_SSL_CA,
MYSQL_OPT_SSL_CAPATH,
MYSQL_OPT_SSL_CIPHER,
MYSQL_OPT_SSL_CRL,
MYSQL_OPT_SSL_CRLPATH,
MYSQL_OPT_CONNECT_ATTR_RESET,
MYSQL_OPT_CONNECT_ATTR_ADD,
MYSQL_OPT_CONNECT_ATTR_DELETE,
MYSQL_SERVER_PUBLIC_KEY,
MYSQL_ENABLE_CLEARTEXT_PLUGIN,
MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS,
MYSQL_OPT_MAX_ALLOWED_PACKET,
MYSQL_OPT_NET_BUFFER_LENGTH,
MYSQL_OPT_TLS_VERSION,
MYSQL_OPT_SSL_MODE,
MYSQL_OPT_GET_SERVER_PUBLIC_KEY,
MYSQL_OPT_RETRY_COUNT,
MYSQL_OPT_OPTIONAL_RESULTSET_METADATA,
MYSQL_OPT_SSL_FIPS_MODE,
MYSQL_OPT_TLS_CIPHERSUITES,
MYSQL_OPT_COMPRESSION_ALGORITHMS,
MYSQL_OPT_ZSTD_COMPRESSION_LEVEL,
MYSQL_OPT_LOAD_DATA_LOCAL_DIR
3)MYSQL* mysql_real_connect(MYSQL* mysql,const char* host,const char* user,
const char* passwd,const char* db,unsigned int port,
const char* unix_socket,unsigned long client_flag);

此函数在mysql_options()后调用,用于连接到mysql数据库
说明:在你能够执行需要有效MySQL连接句柄结构的任何其它API函数之前,mysql_real_connect() 必须成功完成。

参数:host——必须是主机名或IP地址。如果host是NULL或字符串“localhost”,连接将被视为与本地主机连接。
unix_socket——windows下通常为NULL, Linux、Unix 等 POSIX标准系统一般不为NULL。
“client_flag”——通常为0,但是,也能将其设置为具有特定功能的标志组合。

4) int mysql_query(MYSQL* mysql,const char* stmt_str);
用于执行mysql语句(已被官方弃用)。
补充:mysql_query() 不能用于执行包含二进制数据的sql查询语句,此时,你必须使用mysql_real_query()。

如果执行成功将返回0,如果执行错误,将返回非0值。
5)int mysql_real_query(MYSQL* mysql,const char* stmt_str,int stmt_str_length);
用于执行任意mysql语句(官方推荐)。
const char* stmt_str:mysql语句字符串。
int stmt_str_length:上一个参数的长度。
6)MYSQL_RES* mysql_store_result(MYSQL* mysql);
用于获取结果集,在mysql_real_query()后调用来查询并返回完整的结果集。

7)MYSQL_RES* mysql_use_result(MYSQL* mysql);
用于获取结果集,在mysql_real_query()后调用来查询并返回逐行的结果集。
说明:mysql_use_result() 不像mysql_store_result() 那样将结果集实际读取到客户端。它必须通过对mysql_fetch_row() 的调用,对每一行分别进行检索。这将直接从服务器读取结果,而不会将其保存到临时表或本地缓冲区内,与mysql_store_result() 相比,速度更快而且使用的内存更少。使用mysql_use_result() 时,必须执行mysql_fetch_row() ,直至返回NULL值。

8) void mysql_free_result(MYSQL_RES* result);
释放结果集内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值