MySQL 8.4 Reference Manual  /  Connectors and APIs

第31章 连接器和 API

MySQL 连接器为客户端程序提供连接到 MySQL 服务器的功能。API 提供低级别访问 MySQL 资源的方式,使用 classic MySQL 协议或 X 协议。两者都可以让您从另一个语言或环境中连接并执行 MySQL 语句,包括 ODBC、Java(JDBC)、C++、Python、Node.js、PHP、Perl 和 Ruby。

Oracle 开发了一些连接器:

  • Connector/C++ 允许 C++ 应用程序连接到 MySQL。

  • Connector/J 提供了 Java 应用程序使用标准 JDBC API 连接到 MySQL 的驱动支持。

  • Connector/NET 允许开发者创建 .NET 应用程序连接到 MySQL。Connector/NET 实现了完全功能的 ADO.NET 接口,并提供了使用 ADO.NET aware 工具的支持。使用 Connector/NET 编写的应用程序可以在任何受支持的 .NET 语言中编写。

  • Connector/ODBC 提供了使用 ODBC API 连接到 MySQL 的驱动支持。支持 Windows、Unix 和 macOS 平台的 ODBC 连接。

  • Connector/Python 提供了使用 Python DB API 版本 2.0 compliant 的 API 连接到 MySQL 的驱动支持。无需额外的 Python 模块或 MySQL 客户端库。

  • Connector/Node.js 提供了使用 X 协议连接到 MySQL 的异步 API,用于 Node.js 应用程序。Connector/Node.js 支持管理数据库会话和架构、工作 MySQL 文档存储集合和使用原始 SQL 语句。

MySQL C API 接口

为了在C应用程序中直接访问 MySQL,C API 通过 libmysqlclient 客户端库提供低级别的 MySQL 客户端/服务器协议访问。这个方法用于连接到 MySQL 服务器,既被 MySQL 命令行客户端使用,也被许多 MySQL 连接器和第三方 API 详情在这里。

libmysqlclient 包含在 MySQL 发布包中。

还见MySQL C API 实现

要从 C 应用程序访问 MySQL,或者为不支持 Connectors 或 APIs 的语言构建一个接口,C API 是开始的地方。有许多编程工具可以帮助这个过程;见第 6.7 节,“程序开发工具”

本章中描述的剩余 API 提供了从特定应用语言访问 MySQL 的接口。这些第三方解决方案不是由 Oracle 开发或支持的。关于它们的使用和能力的基本信息在这里提供,以供参考。

所有第三方语言 API 都是使用一种方法开发的,或者使用 libmysqlclient,或者实现一个native driver。这两个解决方案提供了不同的优点:

  • 使用libmysqlclient可以提供完整的MySQL兼容性,因为它使用了同样的库文件和MySQL客户端应用程序。然而,功能集是受实现和libmysqlclient暴露出的接口限制的,并且性能可能会低于原生语言和MySQL API组件之间的数据拷贝。

  • 本地驱动程序是在主机语言或环境中实现MySQL网络协议的实现。 本地驱动程序速度快,因为数据不需要在组件之间拷贝,且可以提供标准MySQL API不可用的高级功能。 本地驱动程序也更容易由用户构建和部署,因为不需要复制MySQL客户端库文件来构建本地驱动程序组件。

表 31.1,“MySQL APIs 和接口” 列出了许多用于 MySQL 的库文件和接口。

表31.1 MySQL API和接口

环境 API 类型 注意
Ada GNU Ada MySQL Bindings libmysqlclient 查看GNU Ada MySQL Bindings
C C API libmysqlclient 查看MySQL 8.4 C API Developer Guide.
C++ Connector/C++ libmysqlclient 查看MySQL Connector/C++ 8.4 Developer Guide.
MySQL++ libmysqlclient 查看MySQL++ website.
MySQL wrapped libmysqlclient 查看MySQL wrapped.
Cocoa MySQL-Cocoa libmysqlclient 兼容Objective-C Cocoa环境。查看http://mysql-cocoa.sourceforge.net/
D MySQL for D libmysqlclient 查看MySQL for D.
Eiffel Eiffel MySQL libmysqlclient 查看第31.13节,“MySQL Eiffel Wrapper”.
Erlang erlang-mysql-driver libmysqlclient 查看erlang-mysql-driver.
Haskell Haskell MySQL Bindings Native Driver 查看Brian O'Sullivan的纯 Haskell MySQL 绑定.
hsql-mysql libmysqlclient 查看Haskell MySQL 驱动程序.
Java/JDBC Connector/J Native Driver 查看MySQL Connector/J 开发指南.
Kaya MyDB libmysqlclient 查看MyDB.
Lua LuaSQL libmysqlclient 查看LuaSQL.
.NET/Mono Connector/NET Native Driver 查看MySQL Connector/NET 开发指南.
Objective Caml OBjective Caml MySQL Bindings libmysqlclient 查看Objective Caml MySQL 绑定.
Octave GNU Octave 数据库绑定 libmysqlclient 查看GNU Octave 数据库绑定.
ODBC Connector/ODBC libmysqlclient 查看MySQL Connector/ODBC 开发指南.
Perl DBI/DBD::mysql libmysqlclient 查看第31.9节,“MySQL Perl API”.
Net::MySQL Native Driver 查看Net::MySQL在CPAN。
PHP mysql, ext/mysql接口(已弃用) libmysqlclient 查看MySQL 和 PHP.
mysqli, ext/mysqli接口 libmysqlclient 查看MySQL 和 PHP.
PDO_MYSQL libmysqlclient 查看MySQL 和 PHP.
PDO mysqlnd Native Driver
Python Connector/Python Native Driver 查看MySQL Connector/Python 开发指南.
Python Connector/Python C Extension libmysqlclient 查看MySQL Connector/Python 开发指南.
MySQLdb libmysqlclient 查看第31.10节,“MySQL Python API”.
Ruby mysql2 libmysqlclient 使用libmysqlclient。查看第31.11节,“MySQL Ruby APIs”.
Scheme Myscsh libmysqlclient 查看Myscsh.
SPL sql_mysql libmysqlclient 查看sql_mysql for SPL.
Tcl MySQLtcl libmysqlclient 查看第31.12节,“MySQL Tcl API”.