`

C MYSQL API

    博客分类:
  • C++
阅读更多

C MYSQL 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语句的告警数。

-------------------------------------------------------------
与MySQL交互时,应用程序应使用该一般性原则:

1.    通过调用mysql_library_init(),初始化MySQL库。库可以是mysqlclient C客户端库,或mysqld嵌入式服务器库,具体情况取决于应用程序是否与“-libmysqlclient”或“-libmysqld”标志链接。

2.    通过调用mysql_init()初始化连接处理程序,并通过调用mysql_real_connect()连接到服务器。

3.    发出SQL语句并处理其结果。(在下面的讨论中,详细介绍了使用它的方法)。

4.    通过调用mysql_close(),关闭与MySQL服务器的连接。

5.    通过调用mysql_library_end(),结束MySQL库的使用。

调用mysql_library_init()和mysql_library_end()的目的在于,为MySQL库提供恰当的初始化和结束处理。 对于与客户端库链接的应用程序,它们提供了改进的内存管理功能。如果不调用mysql_library_end(),内存块仍将保持分配状态(这不会增加 应用程序使用的内存量,但某些内存泄漏检测器将抗议它)。对于与嵌入式服务器链接的应用程序,这些调用会启动并停止服务器。

mysql_library_init()和mysql_library_end()实际上是#define符号,这类符号使得它们等效于 mysql_server_init()和mysql_server_end(),但其名称更清楚地指明,无论应用程序使用的是mysqlclient或 mysqld库,启动或结束MySQL库时,应调用它们。对于早期的MySQL版本,可调用mysql_server_init()和 mysql_server_end()取而代之。

如果愿意,可省略对mysql_library_init()的调用,这是因为,必要时,mysql_init()会自动调用它。

要想连接到服务器,可调用mysql_init()来初始化连接处理程序,然后用该处理程序(以及其他信息,如主机名、用户名和密码)调用 mysql_real_connect()。建立连接后,在低于5.0.3版的API中,mysql_real_connect()会将再连接标志 (MYSQL结构的一部分)设置为1,或在较新的版本中,将其设置为0。对于该标志,值“1”指明,如果因连接丢失而无法执行语句,放弃之前,会尝试再次 连接到服务器。从MySQL 5.0.13开始,可以在mysql_options()上使用MYSQL_OPT_RECONNECT选项,以控制再连接行为。完成连接后,调用 mysql_close()中止它。

当连接处于活动状态时,客户端或许会使用mysql_query()或mysql_real_query()向服务器发出SQL查询。两者的差别在 于,mysql_query()预期的查询为指定的、由Null终结的字符串,而mysql_real_query()预期的是计数字符串。如果字符串包 含二进制数据(其中可能包含Null字节),就必须使用mysql_real_query()。

对于每个非SELECT查询(例如INSERT、UPDATE、DELETE),通过调用mysql_affected_rows(),可发现有多少行已被改变(影响)。

对于SELECT查询,能够检索作为结果集的行。注意,某些语句因其返回行,类似与SELECT。包括SHOW、DESCRIBE和EXPLAIN。应按照对待SELECT语句的方式处理它们。

客户端处理结果集的方式有两种。一种方式是,通过调用mysql_store_result(),一次性地检索整个结果集。该函数能从服务器获得查 询返回的所有行,并将它们保存在客户端。第二种方式是针对客户端的,通过调用mysql_use_result(),对“按行”结果集检索进行初始化处 理。该函数能初始化检索结果,但不能从服务器获得任何实际行。

在这两种情况下,均能通过调用mysql_fetch_row()访问行。通过 mysql_store_result(),mysql_fetch_row()能够访问以前从服务器获得的行。通过 mysql_use_result(),mysql_fetch_row()能够实际地检索来自服务器的行。通过调用 mysql_fetch_lengths(),能获得关于各行中数据大小的信息。

完成结果集操作后,请调用mysql_free_result()释放结果集使用的内存。

这两种检索机制是互补的。客户端程序应选择最能满足其要求的方法。实际上,客户端最常使用的是mysql_store_result()。

mysql_store_result()的1个优点在于,由于将行全部提取到了客户端上,你不仅能连续访问行,还能使用 mysql_data_seek()或mysql_row_seek()在结果集中向前或向后移动,以更改结果集内当前行的位置。通过调用 mysql_num_rows(),还能发现有多少行。另一方面,对于大的结果集,mysql_store_result()所需的内存可能会很大,你很 可能遇到内存溢出状况。

mysql_use_result()的1个优点在于,客户端所需的用于结果集的内存较少,原因在于,一次它仅维护一行(由于分配开销较 低,mysql_use_result()能更快)。它的缺点在于,你必须快速处理每一行以避免妨碍服务器,你不能随机访问结果集中的行(只能连续访问 行),你不知道结果集中有多少行,直至全部检索了它们为止。不仅如此,即使在检索过程中你判定已找到所寻找的信息,也必须检索所有的行。

通过API,客户端能够恰当地对查询作出响应(仅在必要时检索行),而无需知道查询是否是SELECT查询。可以在每次mysql_query() 或mysql_real_query()后,通过调用mysql_store_result()完成该操作。如果结果集调用成功,查询为SELECT,而 且能够读取行。如果结果集调用失败,可调用mysql_field_count()来判断结果是否的确是所预期的。如果 mysql_field_count()返回0,查询不返回数据(表明它是INSERT、UPDATE、DELETE等),而且不返回行。如果 mysql_field_count()是非0值,查询应返回行,但没有返回行。这表明查询是失败了的SELECT。关于如何实现该操作的示例,请参见关 于mysql_field_count()的介绍。

无论是mysql_store_result()还是mysql_use_result(),均允许你获取关于构成结果集的字段的信息(字段数目, 它们的名称和类型等)。通过重复调用mysql_fetch_field(),可以按顺序访问行内的字段信息,或者,通过调用 mysql_fetch_field_direct(),能够在行内按字段编号访问字段信息。通过调用mysql_field_seek(),可以改变当 前字段的光标位置。对字段光标的设置将影响后续的mysql_fetch_field()调用。此外,你也能通过调用 mysql_fetch_fields(),一次性地获得关于字段的所有信息。

为了检测和通报错误,MySQL提供了使用mysql_errno()和mysql_error()函数访问错误信息的机制。它们能返回关于最近调用的函数的错误代码或错误消息,最近调用的函数可能成功也可能失败,这样,你就能判断错误是在何时出现的,以及错误是什么。

转自:http://aichundi.blog.163.com/blog/static/7013846220081111104721487/

 

 

分享到:
评论

相关推荐

    C语言 MySQl API接口

    提供了一个MySQL API接口,可以将MYSQL的函数封装成上层接口,以实现连接,断开,增删改的功能

    MySQL_C_API.rar_API_mysql_doc_mysql api_mysql c语言

    本资源“MySQL_C_API.rar_API_mysql_doc_mysql api_mysql c语言”包含了关于MySQL C API的详细文档,对于进行C语言编程并与MySQL数据库集成的开发者来说,是非常宝贵的参考资料。 在MySQL的C API中,主要包含以下几...

    mysql c api

    MySQL C API是MySQL数据库系统提供的一种编程接口,用于在C语言程序中与MySQL服务器进行交互。它是开发人员在iOS平台上构建应用程序,尤其是需要处理数据库功能时的重要工具。由于iPhone应用程序通常使用Objective-C...

    C开发mysql的api中文手册

    这些API虽然在各自的语言环境下有所不同,但它们都是基于MySQL C API设计的,因此理解了C API之后,再学习其他语言的API将会更加容易。例如,MySQL Perl API直接利用Perl语言的特性,提供了数据库连接、语句执行、...

    MySql-C-API.rar_mysql api_mysql c++

    MySQL C API 是 MySQL 数据库与 C 语言交互的一组接口,它允许程序员使用 C 语言编写应用程序,直接操作 MySQL 数据库。本项目提供了一个简单的 MySQL C API 的 C++ 封装,旨在帮助初学者更容易地理解和使用 MySQL ...

    MySQL API连接数据库

    - 在VC6.0中使用MySQL API,首先需要下载并安装MySQL Connector/C,这是MySQL提供的C语言连接器,包含了必要的动态链接库(DLL)和头文件。 - 安装后,将包含目录添加到VC6.0的工程设置中,确保编译器可以找到...

    MySQL API中文对照版

    8. **游标操作**:虽然MySQL API在C语言中的游标功能相对有限,但可以通过调用`mysql_data_seek()`函数在结果集中移动,访问特定行。 9. **元数据获取**:`mysql_field_count()`、`mysql_fetch_field()` 等函数可以...

    mysql—capi文档

    MySQL-CAPI文档主要介绍了如何使用C语言来与MySQL数据库进行交互,这是一项基础且重要的技能,特别是对于那些需要在C程序中嵌入数据库操作的开发者来说。MySQL的C API(应用程序编程接口)提供了一系列的函数,允许...

    mysql api查询手册

    2. **连接与断开MySQL服务器**:手册会详细介绍如何使用`mysql_connect()`(在C API中)或`mysqli_connect()`(在PHP中)函数建立到MySQL服务器的连接,以及如何通过`mysql_close()`或`mysqli_close()`断开连接。...

    用Mysql C API开发MFC程序示范代码

    2. **MySQL C API简介**: MySQL C API是一组函数,允许开发者使用C语言直接与MySQL服务器通信。它包括了连接数据库、执行SQL语句、处理结果集等功能。核心函数有mysql_init、mysql_real_connect、mysql_query等。 3...

    mysql基本API文档

    MySQL是目前广泛使用的开源关系型数据库管理系统之一,其提供了丰富的C语言API接口供开发者调用,以便于实现数据库的各种操作。这些API函数覆盖了从连接数据库到关闭连接的整个过程,以及中间的各种数据查询和更新...

    MySQL API 中文手册 v5.1官方中文版

    如果正在使用MySQL软件的较旧版本,请参阅MySQL 5.0参考手册,该手册涵盖了MySQL 5.0,或参阅MySQL 4.1参考手册,该手册涵盖了MySQL 4.1以及MySQL的所有早期版本。在手册的文本中,通过引用发布版本号(5.1.x),...

    MYSQL-C-API.rar_mysql api_qt mysql

    MySQL-C-API.rar是一个关于在Linux环境下使用Qt框架与MySQL数据库交互的资源包,主要关注的是C语言编程接口(C API)的应用。这个压缩包中包含了一个名为“MYSQL C API.pptx”的演示文稿,很可能是对MySQL C API的...

    MySQL_API中文手册

    - MySQL API主要包括C API,它是一个C语言接口,适用于大多数编程环境。 - API提供了连接到服务器、发送SQL语句、接收结果和处理数据的基本函数,如`mysql_connect()`、`mysql_query()`、`mysql_fetch_row()`等。 ...

    MySQL C API mysql c api访问数据库实例

    MySQL C API 是 MySQL 数据库管理系统提供的一个编程接口,允许开发者使用 C 语言来与 MySQL 数据库进行交互。这个实例是一个基于 MySQL C API 的简单题库系统,它在 VC6.0 开发环境下编译,但同样适用于其他 Visual...

    MYSQL的C API函数使用

    MySQL的C API是MySQL数据库与C语言程序交互的主要方式,它提供了一系列的函数,使得开发者能够在C语言环境中执行SQL语句、管理连接、处理结果集等。本项目"MYSQL的C API函数使用"是一个很好的实践示例,对于初学者...

    api_mysql.zip_mysql api_mysql c#_mysql c++_visual c

    MySQL API是用于与MySQL数据库进行交互的一组编程接口,它允许开发者使用各种编程语言,如C、C#和C++,来创建连接、执行查询和其他数据库操作。在本压缩包"api_mysql.zip"中,包含了与MySQL API相关的库文件和可能的...

    mysql_test_c++.rar_ c_test.r_MYSQL_api mysql_mysql api_mysql 演示

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,而MySQL C API(Application Programming Interface)是为C/C++程序员设计的,用于在C或C++程序中与MySQL服务器进行交互的接口。本项目"mysql_test_c++.rar_ c_...

    mysql api connector

    MySQL API Connector是C语言开发的一款库,用于创建和管理到MySQL数据库的连接池。这个库提供了高效的连接管理和数据操作功能,使得在C程序中与MySQL数据库进行交互变得更加便捷和高效。下面将详细介绍MySQL API ...

Global site tag (gtag.js) - Google Analytics