Como eu faço para verificar se o banco de dados “X” existe?
E como eu faço para cria-lo automaticamente em tempo de execução, caso não exista :?: Quais classes e métodos devo usar :?:
Por exemplo: Minha aplicação, escrita em Java, inicia e verifica que se existe o BD banco_exemplo e, caso não exista, a propria aplicação executa os comandos de criação do BD, tipo: “CREATE DATABASE banco_exemplo”, “USE DATABASE banco_exemplo”, “CREATE TABLE tabela_exemplo…”, e talz…
:lol:
Será possível que ninguém sabe isso?
Se vale informar, estou usando JDBC, com o driver Connector/J do MySQL…
Nada haver, brother!
Você não entendeu meu problema!
Quero criar o BD em tempo de execução da minha aplicação construida em Java…
Por exemplo: Quando o programa iniciar, uma classe.java verifica se existe o BD criado no host, e caso não exista, então a mesma classe, ou outra classe específica para isso, cria o BD, executando no MySQL aqueles comandinhos básicos na criação de um BD, como “CREATE DATABASE banco_exemplo”, “USE DATABASE banco_exemplo”…
Entendeu???
Agora, se puder me ajudar com esse problema ficarei imensamente grato.
Valeu!
M
maquiavelbona
Na verdade, eu entendi e você não se deu ao trabalho de testar realmente.
Quando você se conecta via JDBC, você precisa de um usuário capaz de criar DBs e NÃO ( eu disse NÃO ) precisa conectar a um banco de dados específico. Então na sua URL de conexão não precisa especificar o DB que estás conectando e passar o parâmetro “;create=true” na url faz muito bem.
Agora, entre você olhar o que eu te passei e mudar CREATE TABLE IF NOT EXISTS por CREATE DATABASE IF NOT EXISTS, nada disso não exige algo de você. O resto, são os comandos padrões que você executaria em linha de comando.
Até!
L
Linkel1 like
maquiavelbona:
Na verdade, eu entendi e você não se deu ao trabalho de testar realmente.
Quando você se conecta via JDBC, você precisa de um usuário capaz de criar DBs e NÃO ( eu disse NÃO ) precisa conectar a um banco de dados específico. Então na sua URL de conexão não precisa especificar o DB que estás conectando e passar o parâmetro “;create=true” na url faz muito bem.
Agora, entre você olhar o que eu te passei e mudar CREATE TABLE IF NOT EXISTS por CREATE DATABASE IF NOT EXISTS, nada disso não exige algo de você.
Hehehe…
Você continua não entendendo!
Vou ser mais claro então.
"Não estou discutindo comandos de criação de tabelas ou BD’s, mas simplesmente tentando achar um meio de fazer isso no código java da minha aplicação, entende? Por exempplo, para executar uma consulta eu defino o código: rs = stmt.executeQuery('Select * from tabela1') importando as bibliotecas java.sql.ResultSet e java.sql.Statement, instanciando as classes vindouras logo após a conexão com o BD… Então o meu problema é: Se não houver conexão com o BD quais classes e métodos me permitirão criá-lo executando os inerentes comandos SQL???
É só isso que eu preciso!
Conheço o bastante de MySQL para saber como criar um BD ou tabelas em um, mas não de java para permitir fazê-lo permeado ao meu código java.
Entendeu agora, amigo???
Se você puder me ajudar eu agradeço de verdade, se não, entenda que não preciso saber os comandos MySQL e sim os comandos java que me permitem manipular SQL de criação desde o BD…
Espero sua resposta e compreesão.
Valeu!
M
maquiavelbona1 like
O que você quer é isso:
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.sql.Statement;publicclassTesteCreateDatabase{/** * @author Marcos Iriarte * @param args * @throws ClassNotFoundException * @throws SQLException */publicstaticvoidmain(String[]args)throwsClassNotFoundException,SQLException{//Carrega driver do MySQLClass.forName("com.mysql.jdbc.Driver");//Abre conexão com o banco, não estou conectando a nenhuma base em específicoConnectionconn=DriverManager.getConnection("jdbc:mysql://localhost?user=usuario&password=senha");//Crio um StatementStatementstmt=conn.createStatement();System.out.println("Começo");//Toda operação que não for consulta, use executeUpdate, só assim//você poderá alterar algo no banco de dadosinti=stmt.executeUpdate("CREATE DATABASE IF NOT EXISTS TESTECREATE");System.out.println("Resultado: "+i);// Se criar uma nova base de dados, o retorno será 1System.out.println("Final");}}
Odeio colocar código, mas é o jeito.
Até!
L
Linkel
maquiavelbona:
O que você quer é isso:
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.sql.Statement;publicclassTesteCreateDatabase{/** * @author Marcos Iriarte * @param args * @throws ClassNotFoundException * @throws SQLException */publicstaticvoidmain(String[]args)throwsClassNotFoundException,SQLException{//Carrega driver do MySQLClass.forName("com.mysql.jdbc.Driver");//Abre conexão com o banco, não estou conectando a nenhuma base em específicoConnectionconn=DriverManager.getConnection("jdbc:mysql://localhost?user=usuario&password=senha");//Crio um StatementStatementstmt=conn.createStatement();System.out.println("Começo");//Toda operação que não for consulta, use executeUpdate, só assim//você poderá alterar algo no banco de dadosinti=stmt.executeUpdate("CREATE DATABASE IF NOT EXISTS TESTECREATE");System.out.println("Resultado: "+i);// Se criar uma nova base de dados, o retorno será 1System.out.println("Final");}}
Issooooooo!!!!!!!!!!!!!!
Era exatamente isso que eu estava precisando!
Sou iniciante e não sabia que poderia me conectar ao banco sem especificar uma base de dados, por isso não estava conseguindo criar uma, pois estava dentro de outra, e não imagina como fazer fora...
Valeu, e me desculpe por fazê-lo digitar o código, rsrsrs...
Te devo essa!