Android Butona Click Event Atama




SQL Server Hesaplanmış Kolon Oluşturma




C# Extension Metotları Oluşturma




SQL Server Kolon Değerine Şart Ekleme

Veritabanı özelliklerinden biri de veri tutarlılığını sağlamaktır. Veritabanı tutarlılığı içinde uygulanan özelliklerden biri de kolona atanabilecek değer üzerine şart koşmaktır. Bu işlem SQL Server da SQL CHECK Constraint özelliği ile yapılmaktadır.




C# İle SQL Server İşlemleri

Yazılım geliştirme çoğunlukla veri saklama ve işleme amacıyla yapılır. Verilerin saklanması içinde bir veritabannı sistemi kullanılır. Videomuzda en çok kullanılan veritabanı sistemlerinden olan SQL Server’a C# ile işlem yapmayı öğreneceğiz.




Instance State Nedir, Ne Zaman Kullanılır?

Konunun içeriğinin daha iyi anlaşılması açısından şöyle bir senaryo üzerinden ilerleyebiliriz:

Örnek ekranımızda bir adet TEXTBOX ve bir adet LABEL var. Butona tıklandığında TEXTBOX değerini alıp LABELe yazdırılıyor. İlk ekranımızda göründüğü gibi “Sait ORHAN” yazısı labele yazdırılmış. Bu durumda iken telefonun yönünü değiştirilmesi durumunda label değeri tasarım aşamasında verilen değere dönüyor. Örneğimizde “HELLO WORLD!” metnine döndüğü gibi ve telefon yönü eski durumuna getirilse bile atanan değer geri gelmiyor.

Bu durumun nedeni Android‘in kullanıcıdan alınan değerleri tutup performansa olumsuz etkisi olmaması için statik değer olduğu farzedilen değerleri hafızaya almamasıdır.

Bu sorunun çözmenin yolu; telefonun yönü değiştiğinde sırası ile onSaveInstanceState ve onRestoreInstanceState olayları tetikleniyor.

onSaveInstanceState metodu içerisinde bu şekilde kaybolan değerler Bundle tipindeki parametreye alınarak koruma altına alınır.

@Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);

        outState.putString("name", labelName.getText().toString());
    }

onRestoreInstanceState metodu içinde de onSaveInstanceState metodunda kaydedilen değerler alınarak ilgili kontrollere atanır.

@Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);

        String name = savedInstanceState.getString("name");
        labelName.setText(name);
    }




Standart Kullanıcıların Windows Güncellemelerini Yüklemelerine İzin Vermek

Firmalarda kullanılan güvenlik önlemlerinden biri kullanıcılardan local admin yetkilerini almaktır. Ancak bunu yapınca da standart kullanıcı hesapları Windows güncellemelerini yükleyemez hale geliyor. Bu sorunu çözmek için group policy üzerinden aşağıdaki ayar yapılır. Bu ayardan sonra standart kullanıcılar da windows güncellemelerini yükleyebilecek.

Standart Kullanıcı İçin Güncelleme Yetkisi

Bu işlem domain yapısında olmayan bir Windows makinesinde yapılmak istendiğinde aşağıdaki yok izlenir

Standart Kullanıcıya Güncelleme Yetkisi Verme

Veya Local Policy üzerinden işlem yapılmak istenirse:

  • Çalıştır satırına gpedit.msc yazıp ENTER tuşuna basın (Çalıştır satırı için Win + R)
  • Computer Configuration -> Administrative Templates -> Windows Component -> Windows Update yolunu izleyin
  • “Allow non administrative to receive update notifications” seçeneğini ENABLE olarak değiştirin.




Uygulamanın Tek Örneğinin Çalışmasına Müsaade Etmek

Bazı uygulamalar çalışma prensipleri gereği aynı anda tek örneğinin çalışmasına müsaade eder. Uygulama açık iken başka bir örneği çalıştırılmak istendiğinde yukarıdaki gibi uyarı mesajı verip açılacak olan son örneği iptal eder.

Bu işlem için System.Diagnostics sınıfına ait Process sınıfından yararlanılır. Aşağıdaki kod örneğinde görüldüğü gibi öncelikle Process.GetCurrentProcess().ProcessName kod parçası ile başlatılan uygulamanın işlem adı alınıyor. Process.GetProcessesByName metodu ile de bu isme sahip işlemlerin listesi alınıyor. Eğer bu isimde birden fazla işlem var ise uyarı mesajı verilip return komutu ile işlem iptal edilir ve uygulama sonlandırılır.

            Process[] processesByName = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
            if (processesByName.Length > 1)
            {
                MessageBox.Show("Uygulama zaten çalışıyor.");
                return;
            }

Kodu uygulamanızın Main metodunun içinde başlangıç formunu ekrana göstermeden önce kullanabilirsiniz. Bu şekilde kullanmanız durumunda Main metodunuz aşağıdaki gibi olacaktır.

        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            Process[] processesByName = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
            if (processesByName.Length > 1)
            {
                MessageBox.Show("Uygulama zaten çalışıyor.");
                return;
            }

            Application.Run(new Form1());
        }




C# String Değerden Diğer Veri Türlerine Çeviri

C# dilinin klavyeden girilen varsayılan veri tipi string türüdür. Alınan verinin kullanım yerine göre özellikle sayı türüne çevrilmesi gerekmektedir. Bu işlem yapılırken temel olarak üç yöntemden biri kullanılabilir. Bu yöntemler aşağıdaki gibidir:

  • Convert sınıfının ilgili metotlarından birini kullanmak
  • Hedef sınıfın Parse adlı metodunu kullanmak
  • Hedef sınıfın TryParse adlı metodunu kullanmak

Convert sınıfının ilgili metotları “To” ile başlayan ve hedef türün adı ile biten metotlardır. ToInt16, ToInt32, ToDouble vb…

İlk örneğimizi Convert sınıfı ile verelim:

string metin = textBoxNumber.Text;
if (metin.Any(c => !Char.IsDigit(c)))
{
    MessageBox.Show("Hatalı giriş");
    return;
}
int sayi = Convert.ToInt32(metin);

Bu örneğimizde if şartının içinde yer alan şartta girilen metnin sadece rakamlardan oluşup oluşmadığı test ediliyor. Rakam dışında bir karakter barındıran bir metin geldi ise “Hatalı giriş” uyarısını verip işlem return oluyor.

Aynı işlemi Parse metodu ile yapacak olursak kodu aşağıdaki gibi değiştirmemiz gerekmektedir.

            string metin = textBoxNumber.Text;

            if (metin.Any(c => !Char.IsDigit(c)))
            {
                MessageBox.Show("Hatalı giriş");
                return;
            }

            int sayi = Int32.Parse(metin);

Parse metodunun kullanımı da Convert sınıfının ToXXX metotlarının kullanımı ile aynıdır.

string to int çeviri işleminde kullanılan bir diğer metot da TryParse metodudur. Bu metodun kullanımı sırasında gelen metnin sadece rakamlardan oluşup oluşmadığını test etmeye gerek yoktur. Çalışma şeklini örnek kod üzerinden inceleyelim:

            string metin = textBoxNumber.Text;
            int sayi;

            bool tryParse = Int32.TryParse(metin, out sayi);
            if (tryParse)
            {
                MessageBox.Show("Doğru format");
            }
            else
            {
                MessageBox.Show("Yanlış format");
            }

TryParse metodunun geri dönüş tipi diğerlerinin aksine bool veri tipidir. Çalışma şekli de aşağıdaki adımlardan oluşmaktadır.

  1. Hedef veri türünde bir tanımla yapılır. (Satır 2)
  2. İlgili türün TryParse metodu çağrılır. İlk parametreye dönüştürülecek kaynak metin, ikinci parametreye de daha önce oluşturulan hedef türün örneği out parametresi ile verilir. (Satır 4)
  3. Bu metot çağırma sonucunda dönüşüm işlemi başarılı olursa hedef türün örneğine dönüşüm sonucu atanır, metot dönüş değeri de true olur. Dönüşümün başarısız olması durumunda ise hedef türün örneğine ilgili sınıfın varsayılan değeri atanır, metot dönüş değeri de false olur. Böylelikle işlemin sonucu bir if yardımı ile sorgulanmış olur.




SQL Server Mail Gönderme