Olá a todos, não sei se estou postando este tópico no local correto.
Se estiver no local errado peço antecipadamente minhas desculpas.
Eu tenho um arquivo .sql onde tenho varias inicializações de dblink_connect tipo o abaixo :
Voce deve estar usando um prepared statement executeQuery no seu método… se tiver vários comandos num statement so da esse erro…
Segue um exemplo googlado de como executar varios comando sql num statement e manipular os diveros ResultSets, vê se te ajuda:
publicstaticvoidexecuteStatement(Connectioncon){try{StringSQL="SELECT TOP 10 * FROM Person.Contact; "+"SELECT TOP 20 * FROM Person.Contact";Statementstmt=con.createStatement();booleanresults=stmt.execute(SQL);intrsCount=0;//Loop through the available result sets.do{if(results){ResultSetrs=stmt.getResultSet();rsCount++;//Show data from the result set.System.out.println("RESULT SET #"+rsCount);while(rs.next()){System.out.println(rs.getString("LastName")+", "+rs.getString("FirstName"));}rs.close();}System.out.println();results=stmt.getMoreResults();}while(results);stmt.close();}catch(Exceptione){e.printStackTrace();}}
Editei pq o digitei varias coisas erradas… To cel…
Pscodelico
É foi realmente isso que ocorreu.
Fiz as alterações e rodou.
Obrigado.
Só fiquei com a seguinte questão agora pois rodei o script que cria as conexoes
quando vou no Banco e consulto se as conexões estão criadas elas não aparecem.
victormagno
Não sei se entendi exatamente o que você quis dizer, mas… essas conexões provavelmente não estarão visiveis na sua base de dados. Elas são abertas pela sua aplicação para que possa se conectar ao bd e deixam de existir quando são fechadas ou quando seu tempo de vida acaba (timeout). Não sei em que momento vc consultou isso no banco… durante a execução da sua app ou depois.
Pscodelico
Estou abrindo as conexões na inicialização do aplicativo para utiliza-las ao longo na aplicação e quando fechar a aplicação fechar as conexões.
E consultei com a aplicação aberta.
victormagno
Você está usando PostgreSQL, certo? Como você fez para visualizar as conexões, SELECT * FROM pg_stat_activity;?
Sim estou usando o PostgreSQL.
O comando para visualizar conexões abertas do DB_LINK é
e para fechar é
victormagno
Cara, usa esse select:
SELECT * FROM pg_stat_activity;
Pscodelico
Esse select ele mim mostra a minha conexão do “pgAdmin III - Browser”
victormagno
Mesmo se você colocar o dblink_get_connections no final do ser arquivo .sql não aparece?
Pscodelico
Sim aparece, só não aparece quando consulto no pgAdmin III
victormagno
Humm… pelo que eu entendi, essas conexões que você criou via dblink_connect ficam limitadas à sessão que você está utilizando. Uma vez que você as criou através de sua aplicação, elas estarão disponíveis somente enquanto a conexão que você usou para executar o .sql estiver aberta. Ao acessar pelo pgAdmin você inicia uma nova sessão e os dblink_connect que você criou não estão disponíveis.
Então já que minha preocupação era não deixar elas abertas.Posso nos selects normais que faço a junção logo no inicio fazer as conexões já que elas se fecham ao encerrar a sessão.
victormagno
Por mais que as conexões sejam fechadas ao término da sessão, o ideal é sempre liberar os recursos que você aloca. Talvez havendo uma exceção conexões possam permanecer abertar e se acumular. Recursos alocados sem uso são um custo desnecessário para a aplicação / banco.
O ideal é utiliza o recurso e logo em seguida liberá-lo.