Wie stellt man fest ob Datenbank existiert?

mh10

Grünschnabel
Hallo!

Habe ein Problem. Und zwar möchte ich mit java abfragen, ob eine bestimmte Datenbank (in mySQL) existiert. Wenn sie nicht existiert soll sie aus dem Java Programm erstellt werden.
Kennt sich damit jemand aus?
Vielen Dank im Voraus
 
Hallo!

So erhaelst du die Liste der in der jeweiligen Datenbankinstanz registrierten Datenbanken.
Code:
/**
 * 
 */
package de.tutorials;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

/**
 * @author tom
 * 
 */
public class DatabaseCatalogExample {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {

        Connection connection = initConnection();
        DatabaseMetaData databaseMetaData = connection.getMetaData();
        ResultSet resultSet = databaseMetaData.getCatalogs();

        while (resultSet.next()) {
            System.out.println(resultSet.getString("TABLE_CAT"));
        }

        resultSet.close();
        connection.close();
    }

    private static Connection initConnection() throws Exception {
        MysqlDataSource dataSource = new MysqlDataSource();
        dataSource.setUser("root");
        dataSource.setPassword("");
        dataSource.setServerName("localhost");
        dataSource.setPort(3306);
        dataSource.setDatabaseName("test");
        return dataSource.getConnection();
    }
}

Gruss Tom
 
Hallo Tom

Erstmals danke für deine Hilfe.
Ich hab nur das Problem, dass ich Datenbank unabhängig sein muss.
Also mittles Factory Pattern bekomm ich aufgrund eines Property Files die richige Connection. (Unterstützung für Access, Oracle und MySQL)
Weisst du wie das geht?
mfg
 
Hallo!

Ein einfacher "flexibler" Mechanismus zum Austausch der Datenbank könnte beispielsweise so aussehen:

Java:
/**
 * 
 */
package de.tutorials;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Map;

/**
 * @author Tom
 * 
 */
public interface IConnectionFactory {
    Connection createConnection(String server, int port, String databaseName,
            String username, String password, Map optionalArguments) throws SQLException;
}

Die Implementierung für MySQL:
Java:
/**
 * 
 */
package de.tutorials.impl;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Map;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import de.tutorials.IConnectionFactory;

/**
 * @author Tom
 *
 */
public class MySQLConnectionFactoryImpl implements IConnectionFactory{

    public Connection createConnection(String server, int port, String databaseName, String username, String password, Map optionalArguments) throws SQLException{
        MysqlDataSource dataSource = new MysqlDataSource();
        dataSource.setServerName(server);
        dataSource.setPort(port);
        dataSource.setDatabaseName(databaseName);
        dataSource.setUser(username);
        dataSource.setPassword(password);
        return dataSource.getConnection();
    }
}

Verwendungsbeispiel
Java:
 /**
 * 
 */
package de.tutorials;

import java.sql.Connection;
import java.util.HashMap;
import java.util.Properties;

/**
 * @author Tom
 * 
 */
public class ConnectionFactoryExample {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        Properties properties = new Properties();
        properties.load(ConnectionFactoryExample.class.getClassLoader()
                .getResourceAsStream("database.properties"));

        IConnectionFactory connectionFactory = (IConnectionFactory) Class
                .forName(((String) properties.get("database.factory.class")))
                .newInstance();
        
        Connection connection = connectionFactory.createConnection("localhost", 3306, "test", "root", "", new HashMap());
        //do something
        connection.close();
    }
}

Unser database.properties: (einfach in den Classpath legen)
Code:
database.factory.class=de.tutorials.impl.MySQLConnectionFactoryImpl
#database.factory.class=de.tutorials.impl.OracleConnectionFactoryImpl

Gruß Tom
 
Zurück