I developed this driver in hopes of having a stable, full-featured JDBC driver for MySQL. I put it under the GNU LGPL to hopefully allow the MySQL developer community to add to the utility of the driver.

Vote for MM.MySQL!

I would really appreciate it if you could vote for MM.MySQL in the "Best Database Tool or Driver" category in the Java Developer's Journal 2002 Readers' Choice Awards


Current releases can be found at the SourceForge File List and archived (older) versions can be found on the Older Distributions page.

The latest version is 2.0.14, released on 05-19-02, which is distributed as a .jar file containing the sources, the .class files, and binary-only .jar file suitable for installing in your application server or development environment -- mm.mysql-2.0.14-you-must-unjar-me.jar

Does MM.MySQL really do the job for you? Support its development by sending a donation via PayPal! This software is free, but I won't stop you from sending a donation :)


05-19-02 - Version 2.0.14 Released! Download mm.mysql-2.0.14-you-must-unjar-me.jar to use it, see the Release Notes to read the README and the CHANGELOG.

04-24-02 - Version 2.0.13 Released! Download mm.mysql-2.0.13-you-must-unjar-me.jar to use it, see the Release Notes to read the README and the CHANGELOG.

04-09-02 - Version 2.0.12 Released! Download mm.mysql-2.0.12-you-must-unjar-me.jar to use it, see the Release Notes to read the README and the CHANGELOG.

10-24-01 - My employer, The Net Squad now offers commercial support for MM.MySQL. Please see The Net Squad's Commercial Support Options for MM.MySQL or contact for more information.

10-24-01 - Version 2.0.7 released (see The SourceForge File List to download it) with the following fixes:

  • PreparedStatement.setCharacterStream() now implemented
  • Fixed dangling socket problem when in high availability (autoReconnect=true) mode, and finalizer for Connection will close any dangling sockets on GC.
  • Fixed ResultSetMetaData.getPrecision() returning one less than actual on newer versions of MySQL.
  • ResultSet.getBlob() now returns null if column value was null. - Character sets read from database if useUnicode=true and characterEncoding is not set. (thanks to Dmitry Vereshchagin)
  • Initial transaction isolation level read from database (if avaialable) (thanks to Dmitry Vereshchagin)
  • Fixed DatabaseMetaData.supportsTransactions(), and supportsTransactionIsolationLevel() and getTypeInfo() SQL_DATETIME_SUB and SQL_DATA_TYPE fields not being readable.
  • Fixed PreparedStatement generating SQL that would end up with syntax errors for some queries.
  • Fixed ResultSet.isAfterLast() always returning false. - Fixed timezone issue in PreparedStatement.setTimestamp() (thanks to Erik Olofsson)
  • Captialize type names when "captializeTypeNames=true" is passed in URL or properties (for WebObjects, thanks to Anjo Krank)
  • Updatable result sets now correctly handle NULL values in fields.
  • PreparedStatement.setDouble() now uses full-precision doubles (reverting a fix made earlier to truncate them).
  • PreparedStatement.setBoolean() will use 1/0 for values if your MySQL Version >= 3.21.23.

06-16-01 2.0.6 Released! Small bug fixes in PreparedStatement (parameter checking), and ResultSet (case-sensitive column names). See SourceForge File List to download, and Release Notes for what's been fixed.

06-13-01 2.0.5 Released! Many bug fixes, last release of the 2.0 series. See SourceForge File List to download, and Release Notes for what's been fixed.

01-25-01 2.0.4 Released! IMPORTANT bug fix for getDouble that was broken with -/+INF detection, causing incorrect parsing of decimal numbers. Please upgrade! 12-03-00 2.0.3 Released! Fixes multi-key updateable result sets, large BLOB uploads, -/+INF detection on numbers, performance improvements, JDBC2 getBigDecimal() implementation, serialized object detection from BLOBs using ResultSet.getObject().

06-08-00 2.0.2 Released! Fixes ResultSet.getDouble() array-out-of-bounds bug.

05-31-00 2.0.1 Released! First of the stable 2.0 drivers.

  • Works with both JDBC-1.12 and JDBC-2.0
  • Supports scrollability and updatability
  • Includes transaction support for servers 3.23.15 or newer!

See ChangeLog with source distribution for details.


Check out some performance data. This data was gathered using JDBCBench a tool I wrote to benchmark JDBC driver/database combinations.


MM.MySQL is known to work with the following database tools and application servers:

Apache's Jakarta Projects (Tomcat, Turbine, Velocity, et-al - MM.MySQL works with all of these tools, and in most cases is the JDBC driver used in the example applications they ship.

JBOSS - The JBOSS Open Source J2EE Application server. MM.MySQL works with both BMP and CMP beans in this environment

BEA Weblogic - MM.MySQL works with both BMP and CMP beans as well as servlets and JSPs on this commercial J2EE platform.

IBM Websphere 4.0 - MM.MySQL works with this commercial J2EE platform, BMP, servlets and JSPs are supported.

Forte for Java and its open source conterpart NetBeans - A world-class, professional IDE (Integrated Development Environment) - The NetBeans IDE is the Platform (see right) plus modules that include things such as an editor, tools for working with source code (Java, C++ and others), version control, and a lot more.

IBM VisualAge for Java - Tested with version 1.2b on 7/30/99 by myself.

Oracle's SQL/J - SQLJ stands for Embedded SQL in Java. SQLJ is similar to the ANSI/ISO "Embedded SQL" standards, which prescribe how static SQL is embedded in C, COBOL, FORTRAN, and other languages. For example, Oracle's pre-compiler product PRO*C is an implementation of the Embedded SQL standard in the host language C. Those familiar with the Oracle pre-compilers may think of SQLJ as if it were "PRO*Java".

SQL/J was tested with version 1.1d of the driver (by me) and is available from Oracle's SQL/J Webpage

TableGen - Written by Joe Carter and available from the TableGen Website, TableGen automatically generates classes to represent tables within a database. It is released under GPL.

Related Software

Middlegen - a code generation tool for EJB 2.0 CMP/CMR Entity Beans. It's useful if you have a database with existing tables and you want to map the tables to Entity Beans. You don't want to write a lot of code. You want the code to be generated. The code generated by Middlegen relies on further processing by XDoclet to produce even more code (home/remote/local interfaces, primary key classes and deployment descriptors).

DBConnectionBroker - manage pools of JDBC connections for better performance.

A Type IV JDBC driver for MySQL.

Small (<120K), high performance, LGPL License, comes with source code.


Questions and comments to

Generously hosted by
SourceForge Logo