2016-04-12 14 views
1

DB sınıflaması ve veritabanı hakkında bir Java sınıfı (DB_Conn) almak için kullandığım bir xml dosyası var. DB_Conn Burada xml dosyasını okuyan ve başlatan bir getconnection() var bu yöntem .inBilinmeyen veritabanı ve Bağlantı kapatıldıktan sonra hiçbir işlem yapılamıyor

my_conn_obj = DriverManager.getConnection(my_Path.item(0).getNodeValue() + my_DBname.item(0).getNodeValue(), my_User.item(0).getNodeValue(), my_Pass.item(0).getNodeValue()); 

bir bağlantı nesnesi (my_conn_obj) geri aşağıdaki gibi bir conncetion .I ı

DB_Conn kullanımı ayrı bir Java sınıfı içine sonra sınıf başlangıcında boş olan tanımlanmış db = Yeni DB_Conn();

Ve ihtiyacınız olduğunda/tüm bağlantı kesildikten ve try catch properly.It normalde çalıştı koyduk

Connection conn; 
conn=db.getconnection(); 

kullandığım bir bağlantı açmak, ama o zaman bir süre boşta olduğumu ve ne zaman ne zaman Sayfayı yenile Bazen ve her zaman bilinmeyen veritabanı adı "null" değil ve bağlantı kapalı özel durumlardan sonra hiçbir işlem yapılmaz.

+0

böyle bir şey yapmak emin olun . –

+2

Bağlantılar çeşitli nedenlerle kapalı olabilir. Kapatırsa bir bağlantıyı yeniden açmanız veya daha iyi bir şekilde sizin için işleyen bir bağlantı havuzunu kullanmanız gerekir. – Kayaman

cevap

2

Muhtemelen, bağlantının açık kalması ve zaman aşımına uğraması ya da kapatmanız ve tekrar bağlamanız gerektiğidir. kapatıldıktan sonra

Yani

kullandığınızda
Connection conn; 
conn=db.getconnection(); 

Bu bağlantıyı erişmeye çalışan kodda olduğu bir yere görünüyor getConnection size

public Connection getConnection() { 
    if (classRefToConnection == null || classRefToConnection.isClosed()) { 
    //RE create or connect the connection before returning 
    } 
} 
+0

Bu yüzden DB_Conn 'da bir yöntem ekleyebiliyorum public void close_dbConnection() özel durumu atar { if (my_conn_obj! = Null) { my_conn_obj.close(); } } Ve conn'close() yerine bunu kullanarak benim conn'imi kapatın; ? –

+0

Bunu yapabilirdiniz. Bağlantıyı ve işlevlerini kendi sınıfınızda sardığınız görülüyor. Eğer durum buysa, standart bir konuşma/bağlantı kullanma şeklini sürdürmek için bu sınıftaki tüm çağrıları silmelisiniz. Bağlantıyı sarmak için kullandığınız sınıfta her şey ele alındığı için kodun anlaşılmasını sağlayacaktır. –

İlgili konular