2016-03-25 27 views
1

Bir MySQL veritabanı kullanan bir uygulama geliştiriyorum. Kullanıcı, uygulamayı günlerce çalışır durumda bırakabilir, ancak uygulamanın çoğu zaman veritabanı kullanmıyor. Her neyse, bağlantı aktif tutulmalıdır. Ve bağlantının gerçekte hala canlı olup olmadığını doğrulamak için uygun yaklaşımın ne olduğunu merak ediyorum.QSqlDatabase bağlantı kesme algılama

Doğrulamak için her 5 saniyede bir basit sorgu yapmalı mıyım?

A related question.

+1

Belki de tam olarak her * 5 * saniye değil, ama mantıklı bir yaklaşım gibi geliyor. (Gerçek açıklık durumunu kontrol etmekle birlikte). DB bağlantısı kesilirse (QSqlDatabase bir QObject değil) QSqlDriver sinyallerini alamazsınız. – peppe

+0

Böyle bir sinyalin bulunma nedenini bilmek ilginç olacak. – KcFnMi

+1

Veritabanları için yerel (C) API'leri kayıp bir bağlantıyı size bildirir mi? Belki de kimse rahatsız etmedi ... – peppe

cevap

2

Pek değil, sen veritabanı bağlantısı açık olup olmadığını kontrol etmek yöntemi bool QSqlDatabase::isOpen kullanmalıdır. Bağlantı açıksa doğru döner, aksi halde false değerini döndürür.

+0

Ne sıklıkta? Bu konuda bilgilendirmek için bir sinyal bekliyordum. – KcFnMi

+1

"bool QSqlDatabase :: open" öğesini çağırdığınızda, bağlantı kurulur ve "void QSQlDatabase :: close" çağrıldığında kapatılır. Yani gerekli değil. Ancak, isterseniz, sisteminizi analiz etmeli ve ne sıklıkla olması gerektiğine karar vermelisiniz. Belki, her adımda, her 10 dakikada bir, 1 saat, bir gün. Sen karar ver. – B026

+0

MySQL sunucusunun kapatılmasından sonra bool QSqlDatabase :: isOpen() 'ifadesinin true olduğuna inanır mısınız? – KcFnMi