第 27 章连接器和 API

目录

MySQL 连接器为 Client 端程序提供与 MySQL 服务器的连接。 API 使用传统的 MySQL 协议或 X 协议提供对 MySQL 资源的低级访问。连接器和 API 都使您能够连接和执行来自另一种语言或环境的 MySQL 语句,包括 ODBC,Java(JDBC),C,Python,PHP,Perl,Ruby 和本机 C 和嵌入式 MySQL 实例。

MySQL Connectors

Oracle 开发了许多连接器:

  • Connector/C++使 C 应用程序可以连接到 MySQL。

  • Connector/J提供了驱动程序支持,用于使用标准 Java 数据库连接(JDBC)API 从 Java 应用程序连接到 MySQL。

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

适用于 Visual Studio 的 MySQL可与 Connector/NET 和 Microsoft Visual Studio 2012、2013、2015 和 2017 配合使用。MySQL for Visual Studio 提供对来自 Visual Studio 的 MySQL 对象和数据的访问。作为 Visual Studio 软件包,它直接集成到 Server Explorer 中,从而能够创建新连接并使用 MySQL 数据库对象。

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

  • Connector/Python提供了驱动程序支持,可使用符合Python DB API 版本 2.0的 API 从 Python 应用程序连接到 MySQL。不需要其他 Python 模块或 MySQLClient 端库。

MySQL C API

为了直接在 C 应用程序中直接访问使用 MySQL 的方法,有两种方法:

  • C API通过libmysqlclientClient 端库提供对 MySQLClient 端/服务器协议的低级访问。这是用于连接到 MySQL 服务器实例的主要方法,并且 MySQL 命令行 Client 端以及此处详细介绍的许多 MySQL 连接器和第三方 API 均使用该方法。

libmysqlclient包含在 MySQL 发行版中。

  • libmysqld是嵌入式 MySQL 服务器库,使您可以将 MySQL 服务器的实例嵌入到 C 应用程序中。

libmysqld包含在 MySQL 发行版中。

Note

从 MySQL 5.7.19 开始不推荐使用libmysqld嵌入式服务器库,并将在 MySQL 8.0 中将其删除。

另请参见第 27.7.1 节“ MySQL C API 实现”

要从 C 应用程序访问 MySQL,或使用本章中的连接器或 API 不支持的语言构建与 MySQL 的接口,请以C API作为起点。可以使用许多程序员的 Util 来帮助完成该过程。参见第 4.7 节“程序开发 Util”

第三方 MySQL API

本章中描述的其余 API 提供了从特定应用程序语言到 MySQL 的接口。这些第三方解决方案不受 Oracle 开发或支持。此处仅提供有关其用法和功能的基本信息,仅供参考。

所有第三方语言 API 都是使用两种方法之一(使用libmysqlclient或通过实施本机驱动程序)开发的。两种解决方案具有不同的优势:

  • 使用* libmysqlclient *与 MySQL 完全兼容,因为它使用与 MySQLClient 端应用程序相同的库。但是,功能集仅限于通过libmysqlclient公开的实现和接口,并且由于在本地语言和 MySQL API 组件之间复制数据而导致的性能可能会降低。

  • 本地驱动程序是 MySQL 网络协议的一种实现,完全在宿主语言或环境中实现。本机驱动程序速度很快,因为组件之间的数据复制较少,它们可以提供标准 MySQL API 无法提供的高级功能。对于最终用户来说,本机驱动程序也更容易构建和部署,因为不需要 MySQLClient 端库的副本即可构建本机驱动程序组件。

table27.1,“ MySQL API 和接口”列出了许多可用于 MySQL 的库和接口。

table27.1 MySQL API 和接口

EnvironmentAPITypeNotes
AdaGNU Ada MySQL 绑定libmysqlclientSee GNU Ada 的 MySQL 绑定
CC APIlibmysqlclientSee 第 27.7 节“ MySQL C API”.
C++Connector/C++libmysqlclientSee MySQL Connector/C 8.0 开发人员指南.
MySQL++libmysqlclientSee MySQL++ website.
MySQL wrappedlibmysqlclientSee MySQL wrapped.
CocoaMySQL-Cocoalibmysqlclient与 Objective-C 可可环境兼容。见http://mysql-cocoa.sourceforge.net/
DMySQL 的 DlibmysqlclientSee MySQL 的 D.
EiffelEiffel MySQLlibmysqlclientSee 第 27.13 节“ MySQL Eiffel Wrapper”.
Erlangerlang-mysql-driverlibmysqlclientSee erlang-mysql-driver.
HaskellHaskell MySQL 绑定Native DriverSee Brian O'Sullivan 的纯 Haskell MySQL 绑定.
hsql-mysqllibmysqlclientSee Haskell 的 MySQL 驱动程序.
Java/JDBCConnector/JNative DriverSee MySQL Connector/J 5.1 开发人员指南.
KayaMyDBlibmysqlclientSee MyDB.
LuaLuaSQLlibmysqlclientSee LuaSQL.
.NET/MonoConnector/NETNative DriverSee MySQL Connector/NET 开发人员指南.
Objective Caml客体的 Caml MySQL 绑定libmysqlclientSee 用于目标 Caml 的 MySQL 绑定.
OctaveGNU Octave 的数据库绑定libmysqlclientSee GNU Octave 的数据库绑定.
ODBCConnector/ODBClibmysqlclientSee MySQL Connector/ODBC 开发人员指南.
PerlDBI / DBD::mysqllibmysqlclientSee 第 27.9 节“ MySQL Perl API”.
Net::MySQLNative Driver请参见 CPAN Net::MySQL
PHPmysqlext/mysql界面(已弃用)libmysqlclientSee 原始 MySQL API.
mysqliext/mysqli界面libmysqlclientSee MySQL 改进扩展.
PDO_MYSQLlibmysqlclientSee MySQL 函数(PDO_MYSQL).
PDO mysqlndNative Driver
PythonConnector/PythonNative DriverSee MySQL Connector/Python 开发人员指南.
Python连接器/ Python C 扩展libmysqlclientSee MySQL Connector/Python 开发人员指南.
MySQLdblibmysqlclientSee 第 27.10 节“ MySQL Python API”.
RubyMySQL/Rubylibmysqlclient使用libmysqlclient。参见第 27.11.1 节“ MySQL/Ruby API”
Ruby/MySQLNative DriverSee 第 27.11.2 节“ Ruby/MySQL API”.
SchemeMyscshlibmysqlclientSee Myscsh.
SPLsql_mysqllibmysqlclientSee sql_mysql 用于 SPL.
TclMySQLtcllibmysqlclientSee 第 27.12 节“ MySQL Tcl API”.