以编程方式从Java创建Mysql结构

时间:2014-05-13 15:42:31

标签: java java-native-interface

我确实使用Runtime类

    public void createDBStructure() throws IOException {
    InputStream stream = DBStructureCreator.class.getClassLoader().getResourceAsStream("sql_structure");
    if (stream == null) {
        logger.log(Level.INFO, "File copy error: sql_structure is not found.");
    } else {
        String query;
        query = StreamConverter.convertStreamToString(stream);
        String cmd = "mysql -uroot -ppassw0rd";
        Runtime run = Runtime.getRuntime();
        Process pr = run.exec(cmd);
        BufferedWriter buf = new BufferedWriter(new OutputStreamWriter(pr.getOutputStream()));
        buf.write(query);
        buf.write(";\n\n\n");
        buf.write("exit\n\n\n");
        buf.flush();
        buf.close();
    }
}

但完成此任务需要时间,但仍然无法阻止。如果我在表格可能尚未提供之后立即运行一些代码。 如何让它阻塞,直到mysql完成创建表。 要么如何让它更快

1 个答案:

答案 0 :(得分:1)

pr.waitfor()将等到此Process实例引用的进程完成。