Sayfalar

Translate

20 Mayıs 2015 Çarşamba

SQL Server - ISNUMERIC

Sql de bazen bir değerin Integer olup olmadığını doğrulamak isteriz. Bunun için internette farklı fonksiyonların yazıldığını görebiliyoruz. Yalnız daha basit bir çözüm için ISNUMERIC fonksiyonunu kullanabiliriz. Tabi dikkat etmemiz gereken şey ISNUMERIC fonksiyonunun sadece integer değil float, decimal hatta Scientific Expressions ları da destekliyor olması...

yani aşağıdaki sorgulardan da ISNUMERIC 1 dönecektir.

SELECT ISNUMERIC('123D3')


SELECT ISNUMERIC('123E3')


ISNUMERIC in sadece Integer kontrolü yapmasını aşağıdaki şekilde sağlayabiliriz. Değişkenin sonuna .0e0 ifadesini ekleyerek ISNUMERIC in Değişken sadece integer olduğunda 1 dönmesini sağlıyoruz.

ISNUMERIC(@Degisken + '.0e0')

8 Mayıs 2015 Cuma

SQL Server - Uncommittable Transaction

Hata: Uncommittable transaction is detected at the end of the batch. The transaction is rolled back.

Bu hata mesajı TRANSACTION içerisinde ERROR vermiş bir işlemin COMMIT lenmeye çalışılması ile oluşuyor.

Bir TRANSACTION başlatıldığında, TRY içerisinde hata oluşursa, mevcut TRANSACTION, Uncommittable Transaction olarak işaretleniyor ve bu TRANSACTION için COMMIT komutu çalıştırılamaz hale geliyor.

Çözüm: Error Handling yaparak COMMIT komutunun çalışmasını engelleyerek bu hatadan kurtulabiliyoruz.

Kaynak: https://msdn.microsoft.com/en-us/library/ms175976.aspx

1 Mayıs 2015 Cuma

C# - 32 bit Uygulama ile 64 bit Registry Okuma

Windows 64 bit İşletim Sistemlerinde Registry ikiye ayrılmış. Biri x84 uygulamalar için diğer x64 uygulamalar için. Registry e bir bilgi koyuyoruz ve C# x86 uygulamamızı o bilgiyi okuyacak şekilde kodluyoruz.
















Yalnız uygulamamızı çalıştırdığımızda Key bulunamadı hatası alıyor. Bunun sebebi bizim regedit ekranını kullanarak oluşturduğumuz Key in x64 Registry de oluşuyor olması ve x86 uygulamaların buraya erişiminin olmamasıdır.

Bu gibi durumlar için Microsoft x64 Registry e aşağıdaki dizini koymuş:

"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node"

Biz kodumuza okuması için "HKEY_LOCAL_MACHINE\SOFTWARE\DenemeKey" path ini verdiğimizde C# kodumuz işletim sistemi tarafından "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\DenemeKey" path ine yönlendirilmekte.

Yani, 64 bit işletim sistemi üzerinde 86 bit olarak derlenmiş C# kodu ile registry den bilgi okumak istediğimizde bu bilgileri aşağıdaki path altında oluşturmamız gerekiyor.

"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node"

Kaynak: https://dotnetgalactics.wordpress.com/2010/05/10/accessing-64-bit-registry-from-a-32-bit-process/