第 27 章连接器和 API

目录

MySQL 连接器为 client 程序提供与 MySQL 服务器的连接。 API 提供对 MySQL 协议和 MySQL 资源的 low-level 访问。连接器和 API 使您能够从另一种语言或环境连接和执行 MySQL statements,包括 ODBC,Java(JDBC),Perl,Python,PHP,Ruby 以及本机 C 和嵌入式 MySQL 实例。

MySQL 连接器

Oracle 开发了许多连接器:

  • Connector/C是 MySQL Client Library(libmysqlclient)的独立替代品,用于 C 应用程序。

  • Connector/C使 C applications 能够连接到 MySQL。

  • Connector/J使用标准 Java 数据库连接(JDBC)API 为 Java applications 中的连接到 MySQL 提供驱动程序支持。

  • Connector/NET使开发人员能够创建连接到 MySQL 的.NET applications。 Connector/NET 实现了一个功能齐全的 ADO.NET 接口,并为使用 ADO.NET 感知工具提供支持。 使用 Connector/NET 的应用程序可以用任何支持的.NET 语言编写。

MySQL for Visual Studio适用于 Connector/NET 和 Microsoft Visual Studio 2012,2013,2015 和 2017.用于 Visual Studio 的 MySQL 提供对 Visual Studio 中 MySQL objects 和数据的访问。作为 Visual Studio 软件包,它直接集成到服务器资源管理器中,提供了创建新连接和使用 MySQL 数据库 objects 的能力。

  • Connector/ODBC使用开放式数据库连接(ODBC)API 为连接到 MySQL 提供驱动程序支持。支持来自 Windows,Unix 和 OS X 平台的 ODBC 连接。

  • Connector/Python使用符合Python DB API version 2.0的 API 为 Python applications 的连接到 MySQL 提供驱动程序支持。不需要额外的 Python 模块或 MySQL client libraries。

MySQL C API

要在 C application 中直接访问本机使用 MySQL,有两种方法:

  • C API通过libmysqlclient client library 提供对协议的 low-level 访问。这是用于连接 MySQL 服务器实例的主要方法,MySQL command-line clients 和许多 MySQL 连接器以及此处详述的 third-party API 都使用它。

    libmysqlclient包含在 MySQL 发行版和 Connector/C 发行版中。

  • libmysqld是一个嵌入式 MySQL 服务器 library,它允许您将 MySQL 服务器的实例嵌入到 C applications 中。

    libmysqld包含在 MySQL 发行版中,但不包含在 Connector/C 发行版中。

注意
从 MySQL 5.7.19 开始,libmysqld嵌入式服务器 library 已被弃用,将在 MySQL 8.0 中删除。

另见第 27.8.1 节,“MySQL C API Implementations”

要从 C application 访问 MySQL,或者使用本章中的连接器或 API 不支持的语言为 MySQL 构建接口,C API就是从哪里开始的。许多程序员的实用程序可用于帮助 process;见第 4.7 节,“MySQL 程序开发实用程序”

Third-Party MySQL API

本章中描述的其余 API 提供了来自特定 application 语言的 MySQL 接口。 Oracle 不开发或支持这些 third-party 解决方案。此处提供了有关其使用和能力的基本信息,仅用于参考目的。

所有 third-party 语言 API 都是使用两种方法之一开发的,使用libmysqlclient或实现本机驱动程序。这两种解决方案具有不同的优势

  • 使用libmysqlclient提供与 MySQL 的完全兼容性,因为它使用与 MySQL client applications 相同的 libraries。但是,feature 集仅限于 implementation 和通过libmysqlclient公开的接口,并且 performance 可能会更低,因为数据是在本机语言和 MySQL API 组件之间复制的。

  • 本机驱动程序是完全在 host 语言或环境中实现的 MySQL 网络协议。本机驱动程序很快,因为组件之间的数据复制较少,并且它们可以提供标准 MySQL API 无法提供的高级功能。本地驱动程序也更容易让最终用户进行 build 和部署,因为 build 本机驱动程序组件不需要 MySQL client libraries 的副本。

Table 27.1,“MySQL API 和接口” 列出了许多适用于 MySQL 的 libraries 和接口。

表 27.1 MySQL API 和接口

环境API类型笔记
阿达GNU Ada MySQL 绑定libmysqlclientGNU Ada 的 MySQL 绑定
CC APIlibmysqlclient第 27.8 节,“MySQL C API”
CConnector/C更换libmysqlclientMySQL Connector/C 开发人员指南
CConnector/ClibmysqlclientMySQL Connector/C 8.0 开发人员指南
MySQLlibmysqlclientMySQL 网站
MySQL 包装好了libmysqlclientMySQL 包装好了
可可MySQL-Cocoalibmysqlclient与 Objective-C Cocoa 环境兼容。见http://mysql-cocoa.sourceforge.net/
dMySQL for D.libmysqlclientMySQL for D.
艾菲尔Eiffel MySQLlibmysqlclient第 27.14 节,“MySQL Eiffel Wrapper”
二郎神erlang-mysql-driverlibmysqlclienterlang-mysql-driver。
哈斯克尔Haskell MySQL 绑定本机驱动程序Brian O'Sullivan 的纯 Haskell MySQL 绑定
hsql-mysqllibmysqlclientHaskell 的 MySQL 驱动程序
Java/JDBCConnector/J本机驱动程序MySQL Connector/J 5.1 开发人员指南
卡亚MYDBlibmysqlclientMYDB
LUALuaSQLlibmysqlclientLuaSQL
.NET/MonoConnector/NET本机驱动程序MySQL Connector/NET 开发人员指南
目标 Caml目标 Caml MySQL 绑定libmysqlclientObjective Caml 的 MySQL 绑定
八度GNU Octave 的数据库绑定libmysqlclientGNU Octave 的数据库绑定
ODBCConnector/ODBClibmysqlclientMySQL Connector/ODBC 开发人员指南
PerlDBI / DBD::mysqllibmysqlclient第 27.10 节,“MySQL Perl API”
Net::MySQL本机驱动程序请参阅 CPAN 的Net::MySQL
PHPmysqlext/mysql接口(不建议使用)libmysqlclient原始的 MySQL API
mysqliext/mysqli接口libmysqlclientMySQL 改进扩展
PDO_MYSQLlibmysqlclientMySQL 函数(PDO_MYSQL)
PDO mysqlnd本机驱动程序
蟒蛇Connector/Python本机驱动程序MySQL Connector/Python 开发人员指南
蟒蛇Connector/Python C 扩展libmysqlclientMySQL Connector/Python 开发人员指南
MySQLdblibmysqlclient第 27.11 节,“MySQL Python API”
红宝石MySQL/Rubylibmysqlclient使用libmysqlclient。见第 27.12.1 节,“MySQL/Ruby API”
Ruby/MySQL本机驱动程序第 27.12.2 节,“Ruby/MySQL API”
方案MyscshlibmysqlclientMyscsh
SPLsql_mysqllibmysqlclientSPL 为 sql_mysql
TCLMySQLTcllibmysqlclient第 27.13 节,“MySQL Tcl API”
Updated at: 7 months ago
version_patch() FunctionTable of contentMySQL Connector/C