Executar um script do banco em java

10 respostas
edineimanica

Tem como em apenas um execute eu realizar várias operações como em um script, por exemplo:

String sql = "CREATE TABLE TESTE (OID_TESTE NUMERIC NOT NULL);" + " CREATE TABLE TESTE2 (OID_TESTE2 NUMERIC NOT NULL) ;";
Ser executado em um único comando em java… ???

10 Respostas

Rodrigo_Vieira_Pinto

O que vc acha de criar um projetinho de teste pra verificar isso?

edineimanica
Rodrigo Vieira Pinto:
O que vc acha de criar um projetinho de teste pra verificar isso?
Com certeza eu já tentei...
String sql = "CREATE TABLE TESTE (OID_TESTE NUMERIC  NOT NULL);" +
				"  CREATE TABLE TESTE2 (OID_TESTE2 NUMERIC  NOT NULL) ;";		
		try {
			Connection connection = null;

			DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
			connection = DriverManager.getConnection(URL, user, password);
			connection.createStatement().execute(sql);
			
			connection.commit();

Só que ele indica Caracter Inválido......
Então gostaria de saber se tem como fazer para executar tudo? qual caracter que devo usar como separador.....??

rdgms

Acho que nao amigo…
caso vc necessite fazer isso … crie um SP (Stored Procedure) no BD.
:wink:

edineimanica

rdgms:
Acho que nao amigo…
caso vc necessite fazer isso … crie um SP (Stored Procedure) no BD.
:wink:

Eu não posso criar procedure e nem posso usar split…para verificar os ; …
Acho que não tem como , se alguém souber me avisa…

fabim

Ja tentou com PreparedStatement?

Eu me lembro que com preparesStatement eu ja consegui declarar uma função PL-SQL, escrever o corpo da função e executar sem problemas.

Rodrigo_Vieira_Pinto

Pelo seu teste, o problema não é com o Java, é com o banco mesmo, que não aceita 2 comandos dessa forma.

Tente executar os 2 comandos diretamente na base, usando o client do banco. Se não funcionar, o problema é no banco mesmo.

E, se funcionar, tente o preparedStatement como o fabiocsi falou.

EDITADO: Melhor dizendo: não que o banco tenha problemas, mas sim a sintaxe que você tá usando pode estar incorreta.

fabiofalci
stmt.addBatch(sql);
...
stmt.executeBatch();

Não é uma opção?

furutani

Olá

E com prepared statement já tentou?

edineimanica

Veja um exemplo de comando que eu quero executar…

prompt 
prompt Criando package PKGL_Util...
@@PKGL_Util.pks;
@@PKGL_Util.pkb;

Sendo que nestes arquivos existem create tables, functions, procedures…

edineimanica

edineimanica:
Veja um exemplo de comando que eu quero executar…

prompt 
prompt Criando package PKGL_Util...
@@PKGL_Util.pks;
@@PKGL_Util.pkb;

Sendo que nestes arquivos existem create tables, functions, procedures…

Ninguém, já sei que com um Runtime.execute, derepente funcione …
Existe outra forma ??

Criado 7 de março de 2008
Ultima resposta 10 de mar. de 2008
Respostas 10
Participantes 6