Как проверить, существует ли определенная база данных в mysql, используя java
Я новичок в JDBC, и я хотел узнать, есть ли способ проверить, существует ли конкретная база данных в MySQL.
Допустим, я хотел создать базу данных с именем студентов, если база данных студентов уже создана в MySQL, сообщение об ошибке в eclipse сообщит, что эта база данных студентов уже существует. Однако я хотел создать логический метод, чтобы проверить, существует ли база данных студентов. Если он существует, тогда логический метод вернет false, в противном случае его true, тогда я могу создать базу данных студентов.
Как мне сделать это на Java? Есть ли в JDBC методы, которые это делают, или мне нужно кодировать это с нуля?
ОБНОВЛЕНИЕ 2
Я последовал предложению mguymons, и вот к чему я пришел
public boolean checkDBExists(String dbName){
try {
Class.forName(JDBCDriver); //Register JDBC Driver
System.out.println("Creating a connection...");
conn = DriverManager.getConnection(DBURL, USER, PASS); //Open a connection
ResultSet resultSet = conn.getMetaData().getCatalogs();
while (resultSet.next()) {
String databaseName = resultSet.getString(1);
if(databaseName.equals(dbName)){
return true;
}
}
resultSet.close();
}
catch(Exception e){
e.printStackTrace();
}
return false;
}
Ответы
Ответ 1
Вы можете получить эту информацию из JDBC-соединения с помощью DatabaseMetaData # getCatalogs, вот пример получения Каталогов, так называемых имен базы данных
// Connection connection = <your java.sql.Connection>
ResultSet resultSet = connection.getMetaData().getCatalogs();
//iterate each catalog in the ResultSet
while (resultSet.next()) {
// Get the database name, which is at position 1
String databaseName = resultSet.getString(1);
}
resultSet.close();
Ответ 2
show databases like 'students'
Если вы вернете строку, она существует.
Ответ 3
В новых версиях MySQL (5 и выше) выполните этот запрос:
SELECT COUNT(*)
FROM information_schema.tables
WHERE table_schema = '[database name]'
AND table_name = '[table name]';
Если результат равен 1, он существует.
В Java JDBC, который будет выглядеть примерно так:
// Create connection and statement
String query = "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema'[database name]' AND table_name = '[table name]'";
ResultSet rs = stmt.executeQuery(query);
rs.next();
boolean exists = rs.getInt("COUNT(*)") > 0;
// Close connection, statement, and result set.
return exists;
Ответ 4
Ты делаешь это снова. Правильный метод - попытаться создать его и поймать исключение. Способ, которым вы хотите это сделать, зависит от проблем с временными окнами: его не было, когда вы тестировали, но он был там, когда вы пытались его создать. И все равно вы все равно должны поймать исключение.