Подтвердить что ты не робот

Как проверить, существует ли определенная база данных в 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;
}
4b9b3361

Ответ 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

Ты делаешь это снова. Правильный метод - попытаться создать его и поймать исключение. Способ, которым вы хотите это сделать, зависит от проблем с временными окнами: его не было, когда вы тестировали, но он был там, когда вы пытались его создать. И все равно вы все равно должны поймать исключение.