如何在建立JAVA连接后检查数据库是否存在
我有一个大问题。。。 我有一个数据库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
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();
}