Chapter 21. MySQL APIs

Table of Contents

21.1. MySQL Program Development Utilities
21.1.21.1.1. msql2mysql, Convert mSQL Programs for Use with MySQL
21.1.21.1.2. mysql_config, Get compile options for compiling clients
21.2. MySQL C API
21.2.21.2.1. C API Data types
21.2.21.2.2. C API Function Overview
21.2.21.2.3. C API Function Descriptions
21.2.21.2.4. C API Prepared Statements
21.2.21.2.5. C API Prepared Statement Data types
21.2.21.2.6. C API Prepared Statement Function Overview
21.2.21.2.7. C API Prepared Statement Function Descriptions
21.2.21.2.8. C API Handling of Multiple Query Execution
21.2.21.2.9. C API Handling of Date and Time Values
21.2.21.2.10. C API Threaded Function Descriptions
21.2.21.2.11. C API Embedded Server Function Descriptions
21.2.21.2.12. Common questions and problems when using the C API
21.2.21.2.13. Building Client Programs
21.2.21.2.14. How to Make a Threaded Client
21.2.21.2.15. libmysqld, the Embedded MySQL Server Library
21.3. MySQL PHP API
21.3.21.3.1. Common Problems with MySQL and PHP
21.4. MySQL Perl API
21.5. MySQL C++ API
21.5.21.5.1. Borland C++
21.6. MySQL Python API
21.7. MySQL Tcl API
21.8. MySQL Eiffel Wrapper

This chapter describes the APIs available for MySQL, where to get them, and how to use them. The C API is the most extensively covered, because it was developed by the MySQL team, and is the basis for most of the other APIs.

MySQL Program Development Utilities

This section describes some utilities that you may find useful when developing MySQL programs.

msql2mysql

A shell script that converts mSQL programs to MySQL. It doesn't handle every case, but it gives a good start when converting.

mysql_config

A shell script that produces the option values needed when compiling MySQL programs.

msql2mysql, Convert mSQL Programs for Use with MySQL

Initially, the MySQL C API was developed to be very similar to that for the mSQL database system. Because of this, mSQL programs often can be converted relatively easily for use with MySQL by changing the names of the C API functions.

The msql2mysql utility performs the conversion of mSQL C API function calls to their MySQL equivalents. msql2mysql converts the input file in place, so make a copy of the original before converting it. For example, use msql2mysql like this:

shell> cp client-prog.c client-prog.c.orig
shell> msql2mysql client-prog.c
client-prog.c converted

Then examine client-prog.c and make any post-conversion revisions that may be necessary.

msql2mysql uses the replace utility to make the function name substitutions. See the section called “The replace String-Replacement Utility”.

mysql_config, Get compile options for compiling clients

mysql_config provides you with useful information for compiling your MySQL client and connecting it to MySQL.

mysql_config supports the following options:

--cflags

Compiler flags to find include files and critical compiler flags and defines used when compiling the libmysqlclient library.

--include

Compiler options to find MySQL include files. (Note that normally you would use --cflags instead of this option.)

--libmysqld-libs, --embedded

Libraries and options required to link with the MySQL embedded server.

--libs

Libraries and options required to link with the MySQL client library.

--libs_r

Libraries and options required to link with the thread-safe MySQL client library.

--port

The default TCP/IP port number, defined when configuring MySQL.

--socket

The default Unix socket file, defined when configuring MySQL.

--version

Version number and version for the MySQL distribution.

If you invoke mysql_config with no options, it displays a list of all options that it supports, and their values:

shell> mysql_config
Usage: /usr/local/mysql/bin/mysql_config [options]
Options:
  --cflags         [-I/usr/local/mysql/include/mysql -mcpu=pentiumpro]
  --include        [-I/usr/local/mysql/include/mysql]
  --libs           [-L/usr/local/mysql/lib/mysql -lmysqlclient -lz
                    -lcrypt -lnsl -lm -L/usr/lib -lssl -lcrypto]
  --libs_r         [-L/usr/local/mysql/lib/mysql -lmysqlclient_r
                    -lpthread -lz -lcrypt -lnsl -lm -lpthread]
  --socket         [/tmp/mysql.sock]
  --port           [3306]
  --version        [4.0.16]
  --libmysqld-libs [-L/usr/local/mysql/lib/mysql -lmysqld -lpthread -lz
                    -lcrypt -lnsl -lm -lpthread -lrt]

You can use mysql_config within a command line to include the value that it displays for a particular option. For example, to compile a MySQL client program, use mysql_config as follows:

CFG=/usr/local/mysql/bin/mysql_config
sh -c "gcc -o progname `$CFG --cflags` progname.c `$CFG --libs`"

When you use mysql_config this way, be sure to invoke it within backtick (‘`’) characters. That tells the shell to execute it and subsitute its output into the surrounding command.