Sunday, October 8, 2017

ProjectBase ile Veri Tabanı Bağlantı Türlerine Göre İşlemler

ProjectBase "TransactionMode" dışında bağlantı kontrolüne göre 2 yöntem içermektedir. "ManuelConnectionManagement" ile veri tabanı işlemleri şöyle yapılabilmektedir:

IDatabase2 db = DatabaseFactory.GetDbObject();
db.ExecuteQuery("update employees set salary = 3000 where employee_id = 100");

//Yeni veri tabanı bağlantısı kuruldu
//salary = 3000 oldu
//Bağlantı kesildi

db.ExecuteQuery("update employees set salary = 24000 where employee_id = 100");

//Yeni veri tabanı bağlantısı kuruldu
//salary = 24000 oldu
//Bağlantı kesildi

Yukarıdaki kod örneğinde gösterildiği üzere her işlemde bağlantı kurulup kapatılmaktadır. Art arda işlemlerde bu durum performans sorunu çıkaracağından bu durumda "ManuelConnectionManagement" tercih edilmelidir. Bu durumda aynı işlem iki farklı kod biçiminde yazılabilir.

IDatabase2 db2 = DatabaseFactory.GetDbObject(DbSettings.ManuelConnectionManagement);
db2.ExecuteQuery("update employees set salary = 3000 where employee_id = 100");

//Veritabanı bağlantısı kuruldu
//salary = 3000 oldu
//Bağlantı açık bırakıldı

db2.ExecuteQuery("update employees set salary = 24000 where employee_id = 100");

//Eski bağlantısı kullanıldı
//salary = 24000 oldu
//Bağlantı açık bırakıldı

db2.CloseConnection();

//Bağlantı kesildi.

Yukarıdaki örnekte görüldüğü üzere "CloseConnection" çağrılmadan bağlantı sonlandırılmamaktadır. Aynı kod aşağıdaki biçimde de yazılabilir:

using (IDatabase2 db = DatabaseFactory.GetDbObject(DbSettings.ManuelConnectionManagement))
{
    db.ExecuteQuery("update employees set salary = 3000 where employee_id = 100");

    //Veritabanı bağlantısı kuruldu
    //salary = 3000 oldu
    //Bağlantı açık bırakıldı

    db.ExecuteQuery("update employees set salary = 24000 where employee_id = 100");

    //Eski bağlantısı kullanıldı
    //salary = 24000 oldu
    //Bağlantı açık bırakıldı           
}

//Bağlantı kesildi.

"Bu yazıda "Oracle Managed Provider", Oracle 11g Express Edition ve HR şeması test verileri kullanılmıştır."

"https://github.com/vyigity/ProjectBase"

No comments:

Post a Comment