1 Son düzenleyen, sasmazali (16.10.2017 23:08:11)

Konu: String Connect

Geliştirdiğim uygulamalarda "sql_baglanti.prg" program dosyası ile her işlem için sql server ile bağlantı kuruyor ve işlem bitiminde disconnect ile çıkışımı tamamlıyorum.

Sorum,
Programı açtığımda connecti yapmam ve her yerde ilk connecti kullanmam hata ile karşılaştığımda connecti test ederek tekrar bağlantı kurmam aksi durumda hata mesajına düşmem mi? uygun yoksa ilk satırda belirttiğim gibi her işlemde connect ile bağlantı ve işlem sonunda disconnect ile bağlantıyı koparmam mı? uygun.

Bunu sormamın nedeni ise her işlemde bağlantı için yazılan satır işlemi bazen angarya gibi geliyor sad. Yazmaktan kaçmıyorum çok hoşuma gidiyor ancak genede zamandan tasarrufumu arttırmak istiyorum.

*******
"sql_baglanti.prg" komut satırımda aşağıdaki gibi;

 IF FILE("ayar.dbf")
    SELECT * FROM ayar INTO CURSOR _tcpip READWRITE
    USE IN ayar
 ELSE
    SELECT * FROM yed_ayar INTO CURSOR _tcpip READWRITE
    USE IN yed_ayar
 ENDIF
 
 PUBLIC sql_bag
 PUBLIC databases_adi
 PUBLIC sql_bag, strconstring
 PUBLIC sql_baslangic, sql_bitis, lndiff
 PUBLIC server_turu, databases_ad, kullanici_adi, kullanici_sifre
 PUBLIC ndisplogin
 PUBLIC frm_kullanici, frm_kullanici_sifre
 IF USED("_tcpip")
    SQLSETPROP(0, 'DispLogin', 3)
    sql_bag = 0
    databases_ad = ""
    databases_adi = ""
    
    IF _tcpip.lokasyon=2
            server_turu = ALLTRIM(_tcpip.tcp_ip)
       ELSE
           server_turu = ALLTRIM(_tcpip.local)
       ENDIF

    kullanici_adi = "xxxx"
    kullanici_sifre="yyy"
    
    *** SQL SERVER 2012 VE 2014
    strconstring =  "DRIVER={SQL SERVER NATIVE CLIENT 11.0};SERVER=&server_turu;DATABASE=&databases_ad;UID=&kullanici_adi;PWD=&kullanici_sifre;"
    
    *** SQL SERVER 2000
    * strconstring =  "DRIVER={SQL SERVER};SERVER=&server_turu;DATABASE=&databases_ad;UID=&kullanici_adi;PWD=&kullanici_sifre;"
    
    m.sql_baslangic = DATETIME()
    sql_bag = SQLSTRINGCONNECT(m.strconstring, .T.)
    USE IN "_tcpip"
 ENDIF

2

Re: String Connect

Merhaba Ali;

İki yöntemden hangisini kullanayım demişsin. Ben duruma göre her ikisini de kullanıyorum.

Şöyleki; ilk olarak, programa girdikten sonra bir çok yerde hazır bir connection gerektiren geçici kontrollere, değişkenlere ve raporlara ihtiyaç duyuyorum. Bu durumda bir kenarda hazır tuttuğum bağlantı can simidi gibi imdadıma yetişiyor.

İkinci durum ise; datayı işlemek ve sürekli olarak güncel tutmakla ilgili. Her bir özel durumda ayrı bir connection ile server a  bağlanıyorum; datayı alıyorum, işliyorum ve tekrar geri yolluyorum. İşim bittiği anda o bağlantıya artık ihtiyacım olmadığından kapatıyorum. Biraz detaylandıracak olursam; bendeki her form bir base classtan türüyor ve bu base class ın kendi metodları ve propertiy lerinden bazıları connection/cursoradapter lar ile ilgili; yani angarya olarak her defasında form çalıştığında aynı kodu tekrar tekrar yazmıyorum. Bu temel class benim yerime o işi hallediyor. Form kapandığı anda ise form.unload() methodu ile connection otomatik olarak kapanıyor.

Kendimce yapabileceğim bir kaç uyarı ve not:
Public değişken kullanma, kullanacaksan bir tane public class kullan ve gerekli tüm değişkenlerini/fonksiyonlarını bu public class ile uygulamanın her yerinde erişilebilir kıl. ( Çetin Üstadın dilinde vakti zamanında beni uyarmaktan tüy bitmişti, yokluğunu aratmak istemedim smile  ). Daha detaylı bilgi için bkz: http://www.fox4um.com/topic/2524/form-c … container/

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü