pessoaal estou fazendo uma consulta em uma tabela dismembrando as colunas e inserindo em outra,sendo comeca as a insercoes,ate q chega uma linha q gera esse erro, e as vezes o erro ja da d cara sem inserir nada gostraia de saber o q pode ser
org.postgresql.util.PSQLException: A tentativa de conexão falhou.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:137)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:124)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:29)
at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:386)
at org.postgresql.Driver.connect(Driver.java:260)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at TesteBanco.getConn(TesteBanco.java:18)
at TesteBanco.principal(TesteBanco.java:98)
at TesteBanco.main(TesteBanco.java:12)
Caused by: java.net.BindException: Address already in use: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at org.postgresql.core.PGStream.<init>(PGStream.java:62)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:77)
... 12 more
import java.sql.*;
import java.util.*;
public class TesteBanco
{
public String sql;
public static void main(String[] args)
{
new TesteBanco().principal();
}
public static Connection getConn() throws ClassNotFoundException, SQLException
{
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection("jdbc:postgresql://192.168.1.253:5432/sisref","grinder","grinder123*");
return con;
}
public void principal()
{
try
{
sql = "delete from imports.tipocliente";
getConn().createStatement().executeUpdate(sql);
Statement st = getConn().createStatement();
sql = "select ci.rota_nome,ci.rota_num " +
" from ci_tabelao ci " +
" join master.centrais c on ci.codcentral = c.codcentral " +
" where c.mnemonico in ( select distinct l.cpamae " +
" from imports.acpa a " +
" join imports.lcg l on a.telchave = l.telchave " +
" where a.telchave not in ( " +
" select distinct a.telchave " +
" from imports.acpa a " +
" join ci_tabelao ci on a.telchave = ci.rota_nome " +
" join imports.lcg l on a.telchave = l.telchave " +
" join master.centrais c on ci.codcentral = c.codcentral and l.ddd = c.cn " +
" where ci.rota_nome !~* '[A-Z]' " +
") " +
") order by ci.rota_nome,ci.rota_num";
//System.out.println(sql);
ResultSet rs = st.executeQuery(sql);
while(rs.next())
{ if(rs.getString("rota_nome").length() < 8 &&
rs.getString("rota_num").length() >= 8)
{
String rn[] = rs.getString("rota_num").split(",");
for(int i = 0;i < rn.length;i++)
{
if(rn[i].trim().length() == 8)
{
System.out.println(rn[i]);
}
}
for(int i = 0;i < rn.length;i++)
{
if(rn[i].trim().length() == 8)
{
sql = "insert into imports.tipocliente(rota_nome,rota_num)" +
"values('"+rs.getString("rota_nome")+"','"+rn[i].trim()+"');";
System.out.println(sql);
getConn().createStatement().executeUpdate(sql);
}
}
}
}
}
catch(Exception e)
{
System.out.println("sql com erro = " + sql);
e.printStackTrace();
}
}
Acredito que o erro ocorre quando cai no if dentro do for getConn().createStatement().executeUpdate(sql); Ele abre uma nova conexão, isto pode estar interferindo na conexão anterior!
Tenta fazer uma modificação no getConn para ao invés de todas vez criar uma nova conexão retorne a conexão aberta!
E assim…vc está criando um monte de conexão, chega uma hora que o banco não aceita mais tanta conexão
Cada vez que vc dá um rs.next…tá criando uma nova conexão… muda o teu método getConn ou cria uma variável global de conexão
entendi dei esse mole mesmo vou ver aki,obrigado !!!