26.4.6. Running within a Java Object
Have a java application and wish to “embed” a MySQL
database, make use of the com.mysql.management.MysqldResource
class directly. This class may be instantiated with the default
(no argument) constructor, or by passing in a java.io.File object
representing the directory you wish the server to be "unzipped"
into. It may also be instantiated with printstreams for "stdout"
and "stderr" for logging.
Once instantiated, a java.util.Map, the object will be able to
provide a java.util.Map of server options appropriate for the
platform and version of MySQL which you will be using.
The MysqldResource will allow you to "start" MySQL with a
java.util.Map of server options which you provide, as well as
"shutdown" the database. The following example shows a simplistic
way to embed MySQL in an application using plain java objects:
import com.mysql.management.MysqldResource;
...
public void startMySQL() {
File baseDir = new File(ourAppDir, "mysql");
mysqldResource = new MysqldResource(baseDir);
Map options = new HashMap();
options.put("port", "3336");
String threadName = "OurApp MySQL";
mysqldResource.start(threadName, options);
}
public void stopMySQL() {
if (mysqldResource != null) {
mysqldResource.shutdown();
}
mysqldResource = null;
}
public java.sql.Connection getConnection() throws Exception {
String db = "test";
String url = "jdbc:mysql://localhost:3336/" + db;
String userName = "root";
String password = "";
Class.forName(com.mysql.jdbc.Driver.class.getName());
return DriverManager.getConnection(url, userName, password);
}