如果不存在一次,则创建数据库

时间:2014-08-20 20:21:52

标签: java database jdbc

这是我的代码,此代码应该只执行一次,但是当我的数据库已经存在时,显示了database created消息!

我想在数据库真正创建时看到消息,而不是每次都看到消息。

public static boolean createDatabase() throws Exception {
    String query = "CREATE DATABASE IF NOT EXISTS LIBRARY3";
    Statement st = null;
    Connection con = DriverManager.getConnection(dbUrl, "root", "2000");
    st = con.createStatement();
    if (st.executeUpdate(query) == 1) { // Then database created
        JOptionPane.showMessageDialog(null, "Database created");
        return true;
    }
    return false;
}

此代码始终返回true,为什么?

4 个答案:

答案 0 :(得分:0)

如果它的MySQL你需要检查数据库是否存在以决定数据库是否已真正创建

SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'LIBRARY3'

答案 1 :(得分:0)

它返回true,因为你要求mysql只在它存在的情况下创建数据库,所以,如果它存在则没有错误,它只是不创建它。你可以做的是尝试创建它,如果失败,检查原因是数据库是否存在。

try {
    statement = connection.createStatement();
    String sql = "CREATE DATABASE DBNAME";
    //To delete database: sql = "DROP DATABASE DBNAME";
    statement.executeUpdate(sql);
    System.out.println("Database created!");
} catch (SQLException sqlException) {
    if (sqlException.getErrorCode() == 1007) {
        // Database already exists error
        System.out.println(sqlException.getMessage());
    } else {
        // Some other problems, e.g. Server down, no permission, etc
        sqlException.printStackTrace();
    }
} catch (ClassNotFoundException e) {
    // No driver class found!
}

答案 2 :(得分:0)

每次查询都成功。执行单独的查询以检查表是否存在,并根据该结果返回消息。

详细了解如何检查表格是否存在here

答案 3 :(得分:0)

更短的方法:

SHOW DATABASES LIKE 'LIBRARY3';

如果LIBRARY3不存在,您将获得一个空字符串。