Chapter 22 Connectors and APIs

Table of Contents

22.1 MySQL Connector/ODBC
22.2 MySQL Connector/Net
22.3 MySQL Connector/J
22.4 MySQL Connector/C++
22.5 MySQL Connector/C
22.6 MySQL Connector/Python
22.7 libmysqld, the Embedded MySQL Server Library
22.7.1 Compiling Programs with libmysqld
22.7.2 Restrictions When Using the Embedded MySQL Server
22.7.3 Options with the Embedded Server
22.7.4 Embedded Server Examples
22.8 MySQL C API
22.8.1 MySQL C API Implementations
22.8.2 Simultaneous MySQL Server and MySQL Connector/C Installations
22.8.3 Example C API Client Programs
22.8.4 Building and Running C API Client Programs
22.8.5 C API Data Structures
22.8.6 C API Function Overview
22.8.7 C API Function Descriptions
22.8.8 C API Prepared Statements
22.8.9 C API Prepared Statement Data Structures
22.8.10 C API Prepared Statement Function Overview
22.8.11 C API Prepared Statement Function Descriptions
22.8.12 C API Threaded Function Descriptions
22.8.13 C API Embedded Server Function Descriptions
22.8.14 C API Client Plugin Functions
22.8.15 Common Questions and Problems When Using the C API
22.8.16 Controlling Automatic Reconnection Behavior
22.8.17 C API Support for Multiple Statement Execution
22.8.18 C API Prepared Statement Problems
22.8.19 C API Prepared Statement Handling of Date and Time Values
22.8.20 C API Support for Prepared CALL Statements
22.10 MySQL Perl API
22.11 MySQL Python API
22.12 MySQL Ruby APIs
22.12.1 The MySQL/Ruby API
22.12.2 The Ruby/MySQL API
22.13 MySQL Tcl API
22.14 MySQL Eiffel Wrapper

MySQL Connectors provide connectivity to the MySQL server for client programs. APIs provide low-level access to the MySQL protocol and MySQL resources. Both Connectors and the APIs enable you to connect and execute MySQL statements from another language or environment, including ODBC, Java (JDBC), Perl, Python, PHP, Ruby, and native C and embedded MySQL instances.


Connector version numbers do not correlate with MySQL Server version numbers. See Table 22.2, “MySQL Connector Versions and MySQL Server Versions”.

MySQL Connectors

Oracle develops a number of connectors:


For direct access to using MySQL natively within a C application, there are two methods:

See also Section 22.8.1, “MySQL C API Implementations”.

To access MySQL from a C application, or to build an interface to MySQL for a language not supported by the Connectors or APIs in this chapter, the C API is where to start. A number of programmer's utilities are available to help with the process; see Section 4.7, “MySQL Program Development Utilities”.

Third-Party MySQL APIs

The remaining APIs described in this chapter provide an interface to MySQL from specific application languages. These third-party solutions are not developed or supported by Oracle. Basic information on their usage and abilities is provided here for reference purposes only.

All the third-party language APIs are developed using one of two methods, using libmysqlclient or by implementing a native driver. The two solutions offer different benefits:

Table 22.1, “MySQL APIs and Interfaces” lists many of the libraries and interfaces available for MySQL. Table 22.2, “MySQL Connector Versions and MySQL Server Versions” shows which MySQL Server versions each connector supports.

Table 22.1 MySQL APIs and Interfaces

AdaGNU Ada MySQL BindingslibmysqlclientSee MySQL Bindings for GNU Ada
CC APIlibmysqlclientSee Section 22.8, “MySQL C API”.
CConnector/CReplacement for libmysqlclientSee MySQL Connector/C Developer Guide.
C++Connector/C++libmysqlclientSee MySQL Connector/C++ Developer Guide.
 MySQL++libmysqlclientSee MySQL++ Web site.
 MySQL wrappedlibmysqlclientSee MySQL wrapped.
CocoaMySQL-CocoalibmysqlclientCompatible with the Objective-C Cocoa environment. See
DMySQL for DlibmysqlclientSee MySQL for D.
EiffelEiffel MySQLlibmysqlclientSee Section 22.14, “MySQL Eiffel Wrapper”.
Erlangerlang-mysql-driverlibmysqlclientSee erlang-mysql-driver.
HaskellHaskell MySQL BindingsNative DriverSee Brian O'Sullivan's pure Haskell MySQL bindings.
 hsql-mysqllibmysqlclientSee MySQL driver for Haskell .
Java/JDBCConnector/JNative DriverSee MySQL Connector/J Developer Guide.
KayaMyDBlibmysqlclientSee MyDB.
LuaLuaSQLlibmysqlclientSee LuaSQL.
.NET/MonoConnector/NetNative DriverSee MySQL Connector/Net Developer Guide.
Objective CamlOBjective Caml MySQL BindingslibmysqlclientSee MySQL Bindings for Objective Caml.
OctaveDatabase bindings for GNU OctavelibmysqlclientSee Database bindings for GNU Octave.
ODBCConnector/ODBClibmysqlclientSee MySQL Connector/ODBC Developer Guide.
PerlDBI/DBD::mysqllibmysqlclientSee Section 22.10, “MySQL Perl API”.
 Net::MySQLNative DriverSee Net::MySQL at CPAN
PHPmysql, ext/mysql interface (deprecated)libmysqlclientSee Original MySQL API (Mysql).
 mysqli, ext/mysqli interfacelibmysqlclientSee MySQL Improved Extension (Mysqli).
 PDO_MYSQLlibmysqlclientSee MySQL Functions (PDO_MYSQL) (MySQL (PDO)).
 PDO mysqlndNative Driver 
PythonConnector/PythonNative DriverSee MySQL Connector/Python Developer Guide.
 MySQLdblibmysqlclientSee Section 22.11, “MySQL Python API”.
RubyMySQL/RubylibmysqlclientUses libmysqlclient. See Section 22.12.1, “The MySQL/Ruby API”.
 Ruby/MySQLNative DriverSee Section 22.12.2, “The Ruby/MySQL API”.
SchemeMyscshlibmysqlclientSee Myscsh.
SPLsql_mysqllibmysqlclientSee sql_mysql for SPL.
TclMySQLtcllibmysqlclientSee Section 22.13, “MySQL Tcl API”.

Table 22.2 MySQL Connector Versions and MySQL Server Versions

ConnectorConnector versionMySQL Server version
Connector/C6.1.0 GA5.6, 5.5, 5.1, 5.0, 4.1
Connector/C++1.0.5 GA5.6, 5.5, 5.1
Connector/J5.1.85.6, 5.5, 5.1, 5.0, 4.1
Connector/Net6.55.6, 5.5, 5.1, 5.0
Connector/Net6.45.6, 5.5, 5.1, 5.0
Connector/Net6.35.6, 5.5, 5.1, 5.0
Connector/Net6.2 (No longer supported)5.6, 5.5, 5.1, 5.0
Connector/Net6.1 (No longer supported)5.6, 5.5, 5.1, 5.0
Connector/Net6.0 (No longer supported)5.6, 5.5, 5.1, 5.0
Connector/Net5.2 (No longer supported)5.6, 5.5, 5.1, 5.0
Connector/Net1.0 (No longer supported)5.0, 4.0
Connector/ODBC5.15.6, 5.5, 5.1, 5.0, 4.1.1+
Connector/ODBC3.51 (Unicode not supported)5.6, 5.5, 5.1, 5.0, 4.1