Wenn Sie eine Java-Anwendung haben und eine MySQL-Datenbank darin „einbetten“ möchten, benutzen Sie die Klasse com.mysql.management.MysqldResource. Diese Klasse instanziieren Sie entweder mit dem (parameterlosen) Standardkonstruktor oder, indem Sie ein java.io.File-Objekt übergeben, welches das Verzeichnis darstellt, in das Sie den Server "entpacken" möchten. Sie können sie auch mit Ausgabeströmen zu "stdout" und "stderr" für die Protokollierung instanziieren.
Sobald das Datenbankobjekt erzeugt ist, ist es in der Lage, eine java.util.Map mit den für die Plattform und verwendete MySQL-Version passenden Serveroptionen anzuzeigen.
Die MysqldResource versetzt Sie in die Lage, MySQL mit einer von Ihnen gelieferten java.util.Map von Serveroptionen zu "starten" und die Datenbank "herunterzufahren". Das folgende Beispiel zeigt in vereinfachter Form, wie MySQL mit reinen Java-Objekten in eine Anwendung eingebettet wird.
Diese Datei liegt im Connector/MXJ-Package unter dem Namen
src/ConnectorMXJObjectTestExample.java
vor.
import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.HashMap; import java.util.Map; import com.mysql.management.MysqldResource; public class ConnectorMXJObjectTestExample { public static String DRIVER = "com.mysql.jdbc.Driver"; public static String JAVA_IO_TMPDIR = "java.io.tmpdir"; public static void main(String[] args) throws Exception { File ourAppDir = new File(System.getProperty(JAVA_IO_TMPDIR)); File databaseDir = new File(ourAppDir, "mysql-mxj"); int port = 3336; MysqldResource mysqldResource = startDatabase(databaseDir, port); String userName = "root"; String password = ""; Class.forName(DRIVER); Connection conn = null; try { String url = "jdbc:mysql://localhost:" + port + "/test"; conn = DriverManager.getConnection(url, userName, password); printQueryResults(conn, "SELECT VERSION()"); } finally { try { if (conn != null) { conn.close(); } } catch (Exception e) { e.printStackTrace(); } try { mysqldResource.shutdown(); } catch (Exception e) { e.printStackTrace(); } } } public static MysqldResource startDatabase(File databaseDir, int port) { MysqldResource mysqldResource = new MysqldResource(databaseDir); Map database_options = new HashMap(); database_options.put("port", Integer.toString(port)); mysqldResource.start("test-mysqld-thread", database_options); if (!mysqldResource.isRunning()) { throw new RuntimeException("MySQL did not start."); } System.out.println("MySQL is running."); return mysqldResource; } public static void printQueryResults(Connection conn, String SQLquery) throws Exception { Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(SQLquery); int columns = rs.getMetaData().getColumnCount(); System.out.println("------------------------"); System.out.println(); while (rs.next()) { for (int i = 1; i <= columns; i++) { System.out.println(rs.getString(i)); } System.out.println(); } rs.close(); stmt.close(); System.out.println("------------------------"); System.out.flush(); Thread.sleep(100); // wait for System.out to finish flush } }
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.