COUNT() sistem fonksiyonu, parametre olarak aldığı alandaki satır sayısını INT tipinde geri döndürür.
COUNT_BIG() sistem fonksiyonunun COUNT() fonksiyonundan farkı, elde ettiği sonucu BIGINT tipinde geri döndürmesidir.
INT veritipinin sınırları : -2^31 (-2,147,483,648) - 2^31-1 (2,147,483,647)
BIGINT veritipinin sınırları : -2^63 (-9,223,372,036,854,775,808) - 2^63-1 (9,223,372,036,854,775,807)
Eğer elde edeceğiniz sonucun INT veritipinin sınırlarına sığmayacağını düşünüyorsanız, yapmanız gereken COUNT_BIG() fonksiyonunu kullanmaktır.
Microsoft .Net Framework ailesinin en yeni üyesi olacak 4.0 versiyon için aşağıdaki PDF dokümanını yayınladı.
PDF Formatında indirmek için buraya tıklayınız.
Sql Server 2008 ile birlikte Çoklu Insert (Multiple Insert) özelliği de hayatımıza giriyor.
Microsoft bu özelliğin altında yatan tekniğe, “Table Value Costructor” adını vermiş.
Çoklu Insert (Multiple Insert) özelliği sayesinde Insert yapan DML cümlelerinde, birden fazla satırı işleme tabi tutabiliyoruz.
AdventureWorks 2008 veritabanında bulunan HumanResources.Department tablosunda bu özelliği nasıl kullanabileceğimizi bir örnek ile inceleyelim;
INSERT INTO HumanResources.Department VALUES (‘İnsan Kaynakları’, ‘IK’, GETDATE()), (‘Bilgi İşlem’, ‘IT’, GETDATE()), (‘Muhasebe’, ‘MUH’, GETDATE()), (‘Finans’, ‘FIN’, GETDATE()), (‘Lojistik’, ‘LOJ’, GETDATE()), (‘Kalite ve Eğitim’, ‘KVE’, GETDATE())
Yazdığınız uygulamanın bir yerinde, kullanıcının önüne otomatik olarak IkinciUygulama.exe isimli başka bir programı otomatik olarak açtırmak istiyorsunuz.
Uygulamanızın, kullanıcının IkinciUygulama.exe uygulamasını kullanmasını ve kapatmasını beklemesi gerekmektedir.
Aşağıdaki seçeneklerden hangisi bu işi tam doğru olarak gerçekleştirir?
Process p = new Process(); p.StartInfo.FileName = “IkinciUygulama.exe”; p.Start(); p.WaitForExit(10000);</pre>
Process p = new Process(); p.StartInfo.FileName = "IkinciUygulama.exe"; p.Start(); p.WaitForExit();
Process p = new Process("IkinciUygulama.exe"); p.Start(); p.WaitForExit(10000);
Process p = new Process("IkinciUygulama.exe"); p.Start(); p.WaitForExit();
Sorunun doğru cevabı için; Doğru cevap :
Process p = new Process(); p.StartInfo.FileName = "IkinciUygulama.exe"; p.Start(); p.WaitForExit(); *Process* class'ının **constructor**'ı parametre almamaktadır. Çalıştırılacak uygulamanın yolu *StartInfo.FileName* **property**'si ile verilmelidir. *Start()* method'u ile çalıştırılan **process**'in tamamlanmasının beklenilmesi gerektiği durumlarda *WaitForExit()* method'u parametresiz kullanılır. *WaitForExit()* fonksiyonu *int* parametre ile çağırılırsa, *int* değişken ile belirtilen süre sonra (**milisaniye cinsinden**) uygulama, çalıştırılan uygulamanın kapatılmasını beklemeden çalışmaya devam eder.
Hangi .Net yazılımcısına sorsanız, string tipinde değişkenin hafızada kapladığı yeri hesaplamak için, karakter sayısını 2 ile çarpmak gerektiğini söyler (UTF-8 kodlama).
Genel olarak kabul gören bu hesaplama yöntemi, birçok durumda gerçeğe çok yakın sonuç üretir. Fakat sonuç tam olarak doğru değildir.
UTF-8 (Unicode Transformation Format) hakkında daha fazla bilgiyi Wikipedia‘da yeralan şu makale‘den edinebilirsiniz.
Peki string değişkenin hafızada kapladığı alanı tam olarak nasıl hesaplayacağız?
string OrnekString = “ἄλφα βῆτα γάμμα δέλτα deneme test”; MessageBox.Show(“Uzunluk * 2: “ + OrnekString.Length * 2 + “ Byte”); MessageBox.Show(“Gerçek uzunluk: “ + Encoding.UTF8.GetByteCount(OrnekString).ToString() + “ Byte”);
OrnekString.Length * 2: 66 Byte değerini üretirken,
Encoding.UTF8.GetByteCount(OrnekString): 53 Byte değerini üretmiştir.
String değişkenlerin hafızada kapladığı alanı tam olarak hesaplamanız gerektiği durumlarda, Encoding.UTF8.GetByteCount() fonksiyonunu kullanmanızı öneririm.
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484