Criar o Banco pela programação

Boa tarde,

Pelo hibernate é possivel gerar as tabelas do banco com o seguinte código

File file = new File("./mapeamento/hibernate.cfg.xml");
SchemaExport schemaExport = new SchemaExport(new Configuration().configure(file));
schemaExport.create(true, true);

Desta maneira, eu consigo gerar as tabelas automaticamente, mas o DataBase eu preciso criar manualmente pois ele não gera automatico…
Alguém sabe como criar o Banco via programação (não precisa necessáriamente ser usando o Hibernate) ???

Desde já muito obrigado

valeu pessoal

Dá pra criar por JDBC :smiley:

  1. Isso eu suspeitei desde o principio 8) rsrss

mas vc sabe como?

valeu

Fala ssousuke,

Abre uma conexão JDBC, cria um Statement, e com o método execute(String) roda os comandos de criação das tabelas, constraints, etc. Meio baixo nível, mas as vezes quebra um galho.

[]s

O problema é que para abrir uma conexão JDBC a String de conexão requer o nome do Banco ( jdbc:postgresql:<nome> ) então como eu faço se é justamente o Banco que eu quero criar???

É você tem razão. Pensei que você queria apenas criar as tabelas.
Vou ver se acho algo, e te falo.
[]s

bem, dei uma pesquisada rápida e vi 2 modos:

via sql, pelo java:

query.execute("CREATE DATABASE `database_name`");

e outro modo iria depender do seu sgbd, por exemplo, o Hypersonic DB, basta vc tentar acessar o seu banco normalmente, se ele não existir, ele é criado no ato.

porém, como vi que vc usa o postgres, vc vai precisar usar o primeiro método, hehehe. sei que o postgres possui algumas tabelas de sistema, conecte em uma delas com o usuário administrador, ou que tenha permissões suficientes, e use o create do postgres mesmo.

flw

Mas tem como eu me conectar com uma tabela do sistema sem dar o nome do BD ao qual ela está…??

não querendo abusar da sua boa vontade, mas vc sabe qual é a String de conexao para o Postgres que eu devo usar nesse caso… Ou seja qual é o nome do banco onde essas tabelas ficam…

Obrigado pela atenção… Falow

Fala ssousuke,

Andei lendo alguns fóruns do PostgreSQL e do MySQL.

Não testei, mas parece que com MySQL dá pra fazer numa boa, basta você omitir o nome do banco de dados na URL de conexão:

jdbc:mysql://localhost/?user=root&password=rootpassword

No caso do Postgres parece que é necessário informar o banco de dados com o qual você vai se conectar. Alguns membros dos fóruns mencionam uma versão do PostgreSQL para o Debian, mas não dão certeza se é possível resolver esse problema com esse pacote.

[]s
Eduardo

para criar as tabelas nao precisa dessa mirabolancia toda … apnas coloque essa propriedade no seu arq. de configuracao

property ame="hibernate.hbm2ddl.auto"&gt;create-drop&lt;/property&gt;

se eu nao me engano ela cria o banco tb.