最近项目中需要需要一个功能,为了方便使用人员不用通过命令或者工具创建数据库。在这里只要知道MYSQL的基本命令就可以了。首先说说方案,在启动应用程序之前,就需要检查数据库中是否已经存在要配置的数据库名称,如果有则不添加新的数据库名称,如果没有,则需要通过连接创建数据库。然后通过命令中的mysql -uroot -p123456 testjava < /tmp/testjava.sql.整体思路是比较简单的,下面看看代码实现。
public class CheckDatabaseAndImport {
private String url = "jdbc:mysql://127.0.0.1:3306/testjava";
private String user = "root";
private String password = "123456";
private static final Logger logger = Logger.getLogger(CheckDatabaseAndImport.class.getName());
public void start() {
try {
Class.forName("com.mysql.jdbc.Driver");
DriverManager.getConnection(url, user, password);
logger.info("the database have exist");
} catch (Exception e) {
url = "jdbc:mysql://127.0.0.1:3306/test";
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, password);
Statement stat = conn.createStatement();
// 创建数据库hello
stat.executeUpdate("create database testjava");
logger.info("creat database proudlink");
stat.close();
conn.close();
String path = System.getProperty("user.dir") + "/webapps/JettyHost/WEB-INF/classes/config/testjava.sql";
logger.info("path:" + path);
String statement = "mysql -uroot -p123456 proudlink_test<"+path;
try {
String[] comands = new String[] { "/bin/sh", "-c", statement };
Runtime.getRuntime().exec(comands);
logger.info("import database success");
} catch (Exception e2) {
logger.info("error", e2);
}
} catch (Exception e1) {
logger.error("connect database test error",e1);
}
}
}
}
上面就实现了在运行应用程序的时候导入数据库,如果已经存在则不需要导入。方便用户在终端设备比较多的情况下。谢谢!