Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在建立JAVA连接后检查数据库是否存在_Java_Database_Exists_Database Engine - Fatal编程技术网

如何在建立JAVA连接后检查数据库是否存在

如何在建立JAVA连接后检查数据库是否存在,java,database,exists,database-engine,Java,Database,Exists,Database Engine,我有一个大问题。。。 我有一个数据库java程序创建 我想知道数据库是否存在,如果存在只需连接,如果不创建它 我试过这个: if (dbName.exists() == false) {} 这是所有的代码 Class.forName("com.mysql.jdbc.Driver"); System.out.println("MySQL JDBC driver loaded ok."); 这是它的备份代码,只是为了暂时工作。。。。 部分代码,工作 conn = DriverManager.ge

我有一个大问题。。。 我有一个数据库java程序创建

我想知道数据库是否存在,如果存在只需连接,如果不创建它

我试过这个:

if (dbName.exists() == false) {}
这是所有的代码

Class.forName("com.mysql.jdbc.Driver");
System.out.println("MySQL JDBC driver loaded ok.");
这是它的备份代码,只是为了暂时工作。。。。 部分代码,工作

conn = DriverManager.getConnection(DBurl + url
+ "?createDatabaseIfNotExist=true& + "
+ "useUnicode=true&characterEncoding=utf-8&user="
+ userName + "&&password=" + password);


System.out.println("Connected to database ");           
System.out.println("Connected to the database " + url);
但我想要的是:

FILE dbName = new FILE (url);
Statement stmt = new Statement;

if (dbName.exists() == true)
   System.out.println("Database exists ! Connecting ... ");
else {
   String sql = "CREATE DATABASE "+url;
   stmt.executeUpdate (sql);
}
我不想把带有密码和用户名的url放在同一个地方。。。因为它们是由外部部件提供的,但这已经准备好实现和工作了

所以我想在2个和平中,1个连接jdbc:mysql://localhost:3306/; 没有作为数据库名称的URL。。。 然后,如果不存在具有该名称的数据库,只需在上创建

它不起作用了。。。。没有输入else more,并且说Exeption数据库已经存在


非常感谢。

不知道这里发生了什么,只是尝试连接到不存在的数据库会引发TimeoutException错误或类似错误。如果无法连接,只需捕获异常并执行操作即可

boolean canConnect = false;
Connection conn = null;
try{
    conn = DriverManager.getConnection(...);
    canConnect = true;
}(Exception ex){
   canConnect = false;
}

if (!canConnect){
  makeDatabase(...);
}

祝你愉快

如果是MySQL数据库,那么下面的代码应该可以工作。其他数据库可能会给出不同的错误代码,但一般的方法应该是清楚的。重要的是,您首先要连接到实例,而不是特定的数据库。要创建表,需要连接到新创建的数据库。您不能使用我在示例中用于创建表的实例连接:

    Connection connection = null;
    Statement statement = null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        connection = DriverManager.getConnection("jdbc:mysql://localhost/",
                "root", "admin");
        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!
    }
    // close statement & connection
请注意两件事

新的驱动程序类是'com.mysql.cj.jdbc.driver' 查询CREATEDATABASE IF NOT EXISTS DBNAME意味着您不必检查数据库是否存在
您正在使用哪个数据库?发布您的完整代码和错误跟踪这不是问题。它还缺少一些重要信息,例如用于连接数据库的API、示例代码等。请重新措辞。'FILE dbName=new FILE url。。。如果dbName.exists==true。。。不起作用了……’:谢谢你的回答,但问题是我不希望有例外。如果您理解,我想保持干净,我想在连接后知道数据库是否存在,然后如果数据库存在,只需打印一条消息,如果不存在,则:sql=createdatabase+DbName;stmt.executeUpdatesql;呵呵?!为什么不呢?那没有什么难闻或痒的。非常正常。谢谢你的回答,但问题是我没有在URL中与数据库名建立连接。我首先连接到服务器,然后如果exista,我想连接到DB。如果您理解,我想保持干净,我想在连接后知道数据库是否存在,然后如果数据库存在,只需打印一条消息,如果不存在,则:sql=createdatabase+DbName;stmt.executeUpdatesql;可以建立连接,然后从java.sql.connection调用getMetaData,然后调用getCatalogs返回所有数据库。
try {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/", "root", "admin");
        Statement statement = connection.createStatement();
        String sql = "CREATE DATABASE IF NOT EXISTS DBNAME";
        statement.executeUpdate(sql);
    } catch (ClassNotFoundException | SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }