C API代码是与MySQL一起提供的,它包含在mysqlclient库中,并允许C程序访问数据库。
环境搭建
首先是环境搭建,已经搭建好的看官跳过就好。
一、搭建windows10系统下32位Codeblocks 16+64位MySQL server 5.7环境:
安装codeblocks和MySQL Server,然后由于IDE和MySQL位数不同,需要安装32位的Connector/C,然后在codeblocks中新建项目,在project-build options下,分别配置debug和release选项下的linker setting 和search path里配置mysql链接库和头文件搜索路径,分别为:C:\Program Files\MySQL\MySQL Connector C 6.1\lib\libmysql.lib和C:\Program Files\MySQL\MySQL Connector C 6.1\include。然后在项目根目录中添加dll动态链接库,详细安装及配置过程见:http://blog.csdn.net/beiwei_31/article/details/76665035
二、在windows10 64位系统中安装Visual Studio 2015(32位)和MySQL 5.7(64位),然后安装Connector C 6.1(32位),在VS项目-项目属性-C/C++-附件包含目录中添加Connector C安装目录下的include文件夹路径(mysql.h的路径),在链接器-输入-附加依赖库中添加Connector C安装目录下的lib中的libmysql.lib文件路径。然后将lib文件夹下的libmysql.dll动态链接库文件复制到VS项目根目录~\Visual Studio 2015\Projects\Project_name\Release中。
注:VS的软件位数一定要和Connector/C的位数保持一致,否则无法找到依赖库。详细安装及配置过程见:http://blog.csdn.net/beiwei_31/article/details/76665035
关于MySQL C API的介绍在官网文档已经有了:https://dev.mysql.com/doc/connector-c/en/
目前在网上只看到比较好的MySQL5.1中文参考手册:http://www.mysqlab.net/docs/view/refman-5.1-zh/chapter/index.html
C API常用数据类型
最近自学了MySQL C API的一些数据类型和函数,放在这里方便以后查看。
MYSQL
该结构代表一个数据库连接的句柄,几乎所有的MYSQL函数均使用它。不应尝试拷贝MYSQL结构。
MYSQL_RES
该结构代表返回行的查询结果(SELECT,SHOW, DESCRIBE,EXPLAIN),对应于查询所获得的表。
MYSQL_ROW
该结构为1行数据的“类型安全”表示,即表示记录集里的一条数据。按照字段顺序存放在数组中。这样一条记录的获取是通过mysql_fetch_row()获得的。
MYSQL_FIELD
该结构包含关于字段的信息,如字段名、类型、大小。通过重复调用mysql_fetch_field(),可为每个字段获得MYSQL_FIELD结构。字段对应的值不会显示在MYSQL_FIELD中,而是在MYSQL_ROW中。
MYSQL_FIELD_OFFSET
该结构表示MYSQL字段列表偏移量的“类型安全”表示。由mysql_field_seek()使用。偏移量是行内字段的编号,从0开始。
C API函数
mysql_affected_rows()
返回上次UPDATE、DELETE 或INSERT 查询更改/删除/插入的行数。
mysql_autocommit()
切换 autocommit 模式,ON/OFF。
mysql_change_user()
更改打开连接上的用户和数据库。
mysql_charset_name()
返回用于连接的默认字符集的名称。
mysql_close()
关闭服务器连接。
mysql_commit()
提交事务。
mysql_connect()
连接到MySQL 服务器。该函数已不再被重视, 使用mysql_real_connect()取代。
mysql_create_db()
创建数据库。该函数已不再被重视, 使用SQL 语句CREATE DATABASE 取而代之。
- mysql_data_seek()
在查询结果集中查找属性行编号。
mysql_debug()
用给定的字符串执行 DBUG_PUSH。
mysql_drop_db()
撤销数据库。该函数已不再被重视,使用SQL 语句DROP DATABASE取而代之。
mysql_dump_debug_info()
让服务器将调试信息写入日志。
mysql_eof()
确定是否读取了结果集的最后一行。该函数已不再被重视,可以使用mysql_errno()或mysql_error()取而代之。
mysql_errno()
返回上次调用的 MySQL函数的错误编号。
mysql_error()
返回上次调用的 MySQL函数的错误消息。
mysql_escape_string()
为了用在SQL 语句中,对特殊字符进行转义处理。
mysql_fetch_field()
返回下一个表字段的类型。
mysql_fetch_field_direct()
给定字段编号,返回表字段的类型。
mysql_fetch_fields()
返回所有字段结构的数组。
mysql_fetch_lengths()
返回当前行中所有列的长度。
mysql_fetch_row()
从结果集中获取下一行
mysql_field_seek()
将列光标置于指定的列。
mysql_field_count()
返回上次执行语句的结果列的数目。
mysql_field_tell()
返回上次 mysql_fetch_field()所使用字段光标的位置。
mysql_free_result()
释放结果集使用的内存。
mysql_get_client_info()
以字符串形式返回客户端版本信息。
mysql_get_client_version()
以整数形式返回客户端版本信息。
mysql_get_host_info()
返回描述连接的字符串。
mysql_get_server_version()
以整数形式返回服务器的版本号。
mysql_get_proto_info()
返回连接所使用的协议版本。
mysql_get_server_info()
返回服务器的版本号。
mysql_info()
返回关于最近所执行查询的信息。
mysql_init()
获取或初始化 MYSQL结构。
mysql_insert_id()
返回上一个查询为 AUTO_INCREMENT列生成的 ID。
mysql_kill()
杀死给定的线程。
mysql_library_end()
最终确定 MySQL C API 库。
mysql_library_init()
初始化 MySQL C API 库。
mysql_list_dbs()
返回与简单正则表达式匹配的数据库名称。
mysql_list_fields()
返回与简单正则表达式匹配的字段名称。
mysql_list_processes()
返回当前服务器线程的列表。
mysql_list_tables()
返回与简单正则表达式匹配的表名。
mysql_more_results()
检查是否还存在其他结果。
mysql_next_result()
在多语句执行过程中返回/初始化下一个结果。
mysql_num_fields()
返回结果集中的列数。
mysql_num_rows()
返回结果集中的行数。
mysql_options()
为mysql_connect()设置连接选项。
mysql_ping()
检查与服务器的连接是否工作,如有必要重新连接。
mysql_query()
执行指定为“以 Null 终结的字符串”的SQL 查询。
mysql_real_connect()
连接到 MySQL服务器。
mysql_real_escape_string()
考虑到连接的当前字符集,为了在SQL 语句中使用,对字符串中的特殊字符进行转义处理。
mysql_real_query()
执行指定为计数字符串的 SQL查询。
mysql_refresh()
刷新或复位表和高速缓冲。
mysql_reload()
通知服务器再次加载授权表。
mysql_rollback()
回滚事务。
mysql_row_seek()
使用从 mysql_row_tell()返回的值,查找结果集中的行偏移。
mysql_row_tell()
返回行光标位置。
mysql_select_db()
选择数据库。
mysql_server_end()
最终确定嵌入式服务器库。
mysql_server_init()
初始化嵌入式服务器库。
mysql_set_server_option()
为连接设置选项(如多语句)。
mysql_sqlstate()
返回关于上一个错误的 SQLSTATE错误代码。
mysql_shutdown()
关闭数据库服务器。
mysql_stat()
以字符串形式返回服务器状态。
mysql_store_result()
检索完整的结果集至客户端。
mysql_thread_id()
返回当前线程 ID。
mysql_thread_safe()
如果客户端已编译为线程安全的,返回1。
mysql_use_result()
初始化逐行的结果集检索。
mysql_warning_count()
返回上一个 SQL语句的告警数。