Suponhamos que meu codigo possua :
- Um array de String onde [color=“darkred”]em cada [/color]indice haja um comando SQL ( str[] )de cria uma tabela por exemplo.
- Um método que vai ler cada indice dessa array de String e executar o comando SQL (criando então minhas tabelas no banco de dados). Esse método possui um comando for( i=0; i < str.lenght; i++) para executar o sql de cada indice.
Enquanto não existir as tabelas no banco de dados tudo bem, ele vai criando.
Esse metodo obviamente tem o seu try/catch.
Eu gostaria de saber como eu deveria fazer no seguinte caso:
- Ao executar o SQL é disparada uma excessão dizendo que a tabela X já existe. Como fazer para que o metodo não seja interrompido, ou seja ele continue executando o SQL criando as tabelas que não existem e apenas me dando a informação(no meu arquivo de logger) de que as tabelas repetidas já existem.
Espero ter sido claro. :lol:
Olá,
Você poderia fazer algo assim:
for (...) {
try {
// TODO: Executar aqui
catch (SQLException e) {
if (e.getErrorCode() == 99999) { // Aqui você tem que ver qual o código do erro, eu não sei te informar... mas tenta criar uma tabela existente e pega o número
// TODO: Log
} else {
throw e;
}
}
}
Espero ter ajudado
Abraços
Ola Gilbertt,
tenta o seguinte:
-dentro do primeiro metodo implemente o for
-dentro do for faça a chamada para o método de criação das suas tabelas passando como parametro um item do seu array. Dentro desse outro método terá o seu try/catch q tratará exceção.
assim ele vai conseguir executar todas as strings sql do seu array.
falow;
Pois é pessoal.
Tentei as sugestões , mas ainda não saiu o que eu queria.
Ter as exceptions no logger, tudo bem , é fácil.
A intenção é que MESMO QUE OCORRA UMA EXCESSÃO DEVIDO AO FATO DE JÁ EXISTIR ALGUMA DAS TABELAS NO BD, O PROGRAMA NÃO PARE DE EXECUTAR O SQL CRIANDO AS OUTRAS QUE AINDA NÃO EXISTEM.
No momento (mesmo usando as sugestões fornecidas) assim que o programa lança uma exception devido o SQL detectar uma tabela que já foi criada, ele para de executar o laço for. Na verdade ele nem sequer faz o SQL, pois quando vou consultar o bd verifico que ele nem sequer criou as tabelas anteriores até o momento de encontrar uma que já existe.
Se houver mais alguma sugestão , agradeço.
