Se eu quero fazer uma conexão com um banco de dados mysql, eu tenho que criar uma la no ODBC certo? Tem alguma forma de eu criar essa banco de dados através de um codigo em java, ao invés de cria-la no ODBC?
Outra coisa, qual codigo eu devo usar para testar se um determinado banco de dados existe?
importjava.sql.*;publicclassDB{/** * Valor que representa que o objeto ainda nao tem chave */publicstaticfinalLongDB_ID_PLACEHOLDER=null;/** * Símbolo usado no operador LIKE SQL */publicstaticfinalStringDB_MASK_ALL="%";/** * Database URL */protectedstaticStringdbUrl="jdbc:mysql://localhost/xke";/** * Nome do Driver JDBC */protectedstaticStringdriverName="com.mysql.jdbc.Driver";/** * Login no SGBD */protectedstaticStringusername="root";/** * Senha no SGDB */protectedstaticStringpassword="";protectedstaticObjectdriverInstance=null;privateDB(){thrownewRuntimeException("Naopermitido");}/** * Estabelece a conexão ao SGBD * @return Uma referência ao objeto que manipula a nova conexão */publicstaticConnectiongetConnection()throwsSQLException{try{if(driverInstance==null)driverInstance=Class.forName(driverName).newInstance();}catch(Exceptione){}Connectionconn=(Connection)instances.get();if(conn==null)thrownewSQLException("null");returnconn;}/** * Cria um comando preparado usando a conexão previamente estabelecida * @return O comando preparado (PreparedStatement) * @param statement: O comando SQL * @param type: O tipo do ResultSet que será gerado * @param concurrency: A opção de concorrência do ResultSet que será gerado */publicstaticPreparedStatementprepareStatement(Stringstatement,inttype,intconcurrency)throwsSQLException{returngetConnection().prepareStatement(statement,type,concurrency);}/** * Cria um comando preparado usando a conexão previamente estabelecida * @return O comando preparado (PreparedStatement) * @param statement: O comando SQL */publicstaticPreparedStatementprepareStatement(Stringstatement)throwsSQLException{returngetConnection().prepareStatement(statement);}/** * Fecha e define a referência a um objeto Statement como null * @param s Referência a uma instância de Statement */publicstaticvoidcleanUp(Statements){try{s.close();s=null;}catch(SQLExceptione){}}/** * Fecha e define a referência a um objeto ResultSet como null * @param rs Referência a uma instância de ResultSet */publicstaticvoidcleanUp(ResultSetrs){try{rs.close();rs=null;}catch(SQLExceptione){}}/** * Fecha a conexão ao SGBD */publicstaticvoidclose(){Connectionconn=(Connection)instances.get();try{conn.close();}catch(SQLExceptione){}}/** * ThreadLocal permite que uma variável estática seja compartilhada * entre diferentes threads. Você pode ter algo como uma variável * global por threads. */privatestaticThreadLocalinstances=newThreadLocal(){protectedsynchronizedObjectinitialValue(){try{Connectionconn=DriverManager.getConnection(dbUrl,username,password);conn.setAutoCommit(true);return(conn);}catch(SQLExceptionsqle){returnnull;}}publicObjectget(){Connectioncn=(Connection)super.get();try{if(cn.isClosed()){thrownewSQLException("closed");}}catch(Exceptione){try{cn=DriverManager.getConnection(dbUrl,username,password);}catch(Exceptioninner){inner.printStackTrace();cn=null;}instances.set(cn);}returncn;}};/** * Testes */publicstaticvoidmain(String[]argv){try{Connectioncn=DB.getConnection();System.out.println("Itworked!"+cn.getCatalog());System.out.println(cn.getCatalog());DB.cleanUp(rs);DB.cleanUp(ps);}catch(Exceptione){e.printStackTrace();}}}