webForumDet fria alternativet

Kolla om en db connection är öppen

2 svar · 197 visningar · startad av Viktor

ViktorMedlem sedan aug. 20021 752 inlägg
#1

Jag har en databas connection som jag ibland vill kolla om den är öppen fortfarande, då kör jag

if(conn.isClosed())
   System.out.println("Stängd");
else
   System.out.println("Öppen");

men den rapporterar alltid att den är öppen, även om jag går in i databasen och dödar anslutningen där så säger ändå isClosed att den är öppen :l Vad har jag missat? Finns det något bättre sätt att testa om en connection är öppen?
Jag kör MySQL och Java 1.4.1_02

/Viktor

phonkworksMedlem sedan juli 2001228 inlägg
#2

Det står i API't att conn.isClosed() garanteras att returnera true BARA om man explicit har kört conn.close().

Kanske är bäst att köra en liten select i nån tabell och fånga eventuella Exceptions för att kolla om den är stängd.

Mvh
phonk

ViktorMedlem sedan aug. 20021 752 inlägg
#3

Tack för hjälpen :)

Ibland är man för slö för sitt eget bästa. När jag skriver in java.sun.com i explorer så finns det redan en url till api 1.3, jag tänker då connection.isClosed, den kan jag inte tänka mig har ändrats något så jag väljer den direkt, där står det inget om det som du skrev som står i 1.4 :x

Ok, här är den lösning som jag kom fram till, inte perfekt men den fungerar,

private boolean isConnectionOK(Connection conn)
{
	try
	{
		if(conn.getAutoCommit()==true)
		{
			conn.setAutoCommit(false);
			conn.commit();
			conn.setAutoCommit(true);
		}
		else
		{
			conn.commit();
		}
	}
	catch(SQLException e)
	{
		return(false);
	}
	return(true);
}

/Viktor

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)