executeUpdate

5 respostas
Rodrigo_de_Mello

Boa tarde Pessoal.

Preciso identificar alguma maneira de certificar que meu grant foi aplicado com sucesso. É correto implementar o código abaixo? O executeUpdate me retorna a quantidade de registros ‘afetados’. No javadoc ta falando algo sobre insert, update … para grant´s será que não rola?

Agradeço.

try {

//Executa query

int ok = db.executeUpdate(query.toString());

//Aplicou com sucesso

if(ok == 1){

iLinha ++;

//Não aplicou

}else {

qnAplic += iLinha + 1;

queryNAplic += debugar.getMsg()+ " QUERY: " + query.toString() + " \t| LINHA : " + qnAplic + “\n”;

}

}catch(Exception se){

queryNAplic += debugar.getMsg() + " *** ObjectDB.: line 271 - CONTATE O ADMINISTRADOR. PROBLEMAS AO APLICAR GRANT´s *** " + se.getMessage();

return;

}

5 Respostas

Rodrigo_de_Mello

Pessoal,

Resumindo: Se eu passar uma query (grant …) para um executeUpdate, vai funcionar? ta me retornando 0. Esse metodo só vai funcionar mesmo para insert, update e delete??? alguém mais experiente ae ou que já passou por isso. É que essa aplicação é feita via jdbc ‘ainda’… futuramente vou tirar isso para hibernate.

T

Pergunta boba número 1.
GRANT não é que exatamente retorne um número de registros modificados (OK, eu sei que ele internamente altera algumas tabelas do sistema). Por que é que você quer tal retorno de GRANT? GRANT não é uma query. Queries começam por SELECT.
Todos os exemplos que eu vi de executeUpdate com grant nem pegavam o tal número de registros modificados porque isso não fazia sentido.
Que eu saiba, você tem é de se preparar para uma SQLException que pode ser lançada se por acaso você não tiver as permissões adequadas para o GRANT. Mas você pode usar executeUpdate com GRANT sem problemas, só se lembrar que GRANT não é UPDATE e esse número não faz sentido com GRANT.

Rodrigo_Rocha_de_Mor

É como foi dito acima!
O GRANT não vai alterar o conteúdo de nenhum registro específico, logo o retorno será sempre 0…
O correto é vc testar no console do seu SGBD o comando para garantir que a sintaxe está correta e tratar o lançamento de Exception’s caso aglo dê errado em tempo de execução!

[]'s

Rodrigo_de_Mello

Thingol,

Eu quero me certificar que meu grant foi aplicado. Se eu tiver um erro de sintaxe por exemplo será lançada uma exception… ? fora isso deu td certo teoricamente?

Abs,

Obrigado pelas explicações. (Vou fazer alguns testes)

Rodrigo_de_Mello

Basicamente seria isso.

try {

//Executa query

db.executeQuery(query.toString());

//Aplicou com sucesso
iLinha ++;

}catch(Exception se){

//Não aplicou

+= iLinha + 1;

queryNAplic += debugar.getMsg()+ " QUERY: " + query.toString() + " \t| LINHA : " + qnAplic + “\n;

}

}//End IF

Criado 4 de setembro de 2008
Ultima resposta 4 de set. de 2008
Respostas 5
Participantes 3