How to List SQL Server Instance Names

There is several ways to find Installed SQL Server Instance Names

1.Via Command Prompt

sql1

2.via SQL Query

sql2

3. via .Net

void Main()
{
Microsoft.Win32.RegistryKey baseKey = Microsoft.Win32.RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, Microsoft.Win32.RegistryView.Registry64);
Microsoft.Win32.RegistryKey key = baseKey.OpenSubKey(@”SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL”);

foreach (string s in key.GetValueNames())
{
//MessageBox.Show(s);
Console.WriteLine(s);
}

key.Close();
baseKey.Close();
}

Advertisements

C# ‘Does Not Exist In the Current Context’ Hatasını Giderme

Web Site olarak oluşturduğum bir projede yeni bir class yazmıştım. Fakat başka bir projeye taşıdığımda class olduğu halde
‘Does Not Exist In the Current Context’ hatası alıyordum. Çok sinir bozucu bir durum olan bu durumun çözümünü biraz araştırdıktan sonra buldum.

– Class’a sağ tıklayıp Properties diyelim(Class’ı seçip F4 e de basabilirsiniz.)
– Build Action seçeneğini Compile olarak değiştirelim.

Daha sonra Ctrl + Shift + B diyerek Rebuild edelim. Sorunun ortadan kalktığını göreceksiniz.

C# Basit Dosya ve Klasör İşlemleri

Önce klasör oluşturmaya bakalım. CreateDirectory metodu geriye DirectoryInfo döndürür. Yani oluşturduğu klasörün bilgilerini. Ayrıca 7 tip hata döndürebilir. Detaylı bilgi için tıklayın. Şimdi örneğimizi yazalım.
Masaüstünde bir klasör oluşturalım ve oluşturduğumuz klasörün tam yolunu ekrana basalım.

String path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\TestDosya";
DirectoryInfo _info = Directory.CreateDirectory(path);
Console.WriteLine(_info.FullName);

Dosyamızı oluşturduktan sonra şimdi de taşıma işlemini gerçekleştirelim. Taşıma işleminde şu noktayı unutmamak gerek. Taşıma işlemi yapılacak yerde aynı isimde bir klasör olmayacak. Yoksa IOException hatası alırsınız. Neyse metod iki parametre alır. Birisi taşınacak klasör, diğeri ise taşınacağı yer. Taşınacağı yer kısmında klasörün ismini değiştirerek taşıma işlemi gerçekleştirebilirsiniz. Aşağıdaki kodda Masaüstündeki bir klasörü aynı isimle Resimlerime taşıyoruz. Ayrıca bu işlemi yaparken Exist metodundan da bahsedeyim. Bu metod klasörün var olup olmadığını kontrol ediyor. Eğer varsa true, yoksa false döndürüyor.

String tasinanDizin = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @”\TestDosya”;
String tasinacagiYer = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + @”\TestDosya”;
if (Directory.Exists(tasinanDizin))
        Directory.Move(tasinanDizin, tasinacagiYer);

Taşıma işlemi bu kadar basit. Ama taşıma işleminde hata çıkması çok olası bir durum. O yüzden mutlaka işlemi try-catch içinde yapmalısınız. Şimdi silme işlemini yapalım. Resimlerime taşıdığımız klasörü silelim. Taşıma işleminde yaptığımız gibi önce dosyanın varlığından emin oluyoruz ve sonra silme işlemini gerçekleştiyoruz.

String silinecekDosya = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + @”\TestDosya”;
if (Directory.Exists(silinecekDosya))
    Directory.Delete(silinecekDosya);

Klasör ile ilgili genel işlemleri tamamladıktan sonra şimdide yolunu verdiğimiz bir klasörün veya mantıksal sürücülerin içindeki dosyaların ve klasörlerin listesini alalım. C:\ sürücüsündeki dosyaları getirelim önce.

StringBuilder builder = new StringBuilder();
foreach (var directory in Directory.GetDirectories(@”C:\”))
builder.AppendLine(directory);
Console.WriteLine(builder.ToString());

Klasörleri listeledik. Şimdi de aynı yöntem ile dosyaları alalım.

StringBuilder builder = new StringBuilder();
foreach (var directory in Directory.GetFiles(@”C:\”))
    builder.AppendLine(directory);
Console.WriteLine(builder.ToString());

Benim C:\ sürücümde .sys uzantılı dosyaların fazlalığı nedeniyle ben sadece bu uzantıdaki dosyaların görünmesini istiyorum. Kodumuzda ufak bir değişiklik yaparak bunu gerçekleştirebiliriz.

StringBuilder builder = new StringBuilder();
foreach (var directory in Directory.GetFiles(@”C:\”, “*sys”))
    builder.AppendLine(directory);
Console.WriteLine(builder.ToString());

C# Javascript ile ImageButton’a MouseHover ve MouseOver ekleme

Butonun üstüne geldiğinde seçilmiş efekti vermek için aşağıdaki kodu kullanabilirsiniz.

//Butonun üstüne geldiğinde
imgBtnGonder.Attributes.Add(“onmouseover”, “javascript:this.src=’/images/login/login_hover.png'”);

//Butonun üstünden ayrıldığında
imgBtnGonder.Attributes.Add(“onmouseout”, “javascript:this.src=’/images/login/login.png'”);

C# using Kullanımı

using kelimesini herhangi bir namespace’i projemize eklerken kullanıyorduk. Fakat bu kelimenin başka bir işlevi daha var. Tanımlanan bir nesnenin dispose edilmesini garantilemek. Yalnız kullanmamız için önemli bir istisna var. Nesnenin IDisposable arayüzünü geliştirmesi gerekiyor. Örneğin SqlConnection ve SqlCommand nesneleri IDisposable arayüzünü geliştirdiği için using’i bu nesneler için kullanabiliriz.

using(SqlConnection baglanti = new SqlConnection(“ConnectionString Buraya”))
{
    using(SqlCommand command = new SqlCommand(“_isUser”, baglanti))
    {
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.Add(@”ID”, SqlDbType.UniqueIdentifier).Value = new Guid(“ecff7864-1279-e211-a252-0080489e8d2a”);
        baglanti.Open();
        SqlDataReader reader;
        reader = command.ExecuteReader();
        return reader.HasRows;
    }
}

Peki bu kod ne işe yarar?
-Her defasında tanımladığınız nesneyi dispose etmek yerine using blokları arasına alarak kod blogu tamamlandığında
dispose işleminin otomatik yapılmasını sağlayabilirsiniz.

C# da DataTable Filtreleme

DataTable’ı Select Metodu ile filtreleyebiliyoruz. Bunun için daha önce veritabanından veya xml den doldurduğumuz table isimli bir DataTable’i;

DataRow[] dataRow = tablo.Select("Tutar > 0");
	DataTable newTable = tablo.Clone();
	foreach(DataRow item in dataRow)
	{
		newTable.ImportRow(item);
	}

	return newTable;

tarzında filtreleyebiliriz. Yukarıdaki kodda tabloda Tutar field’ı sıfırdan büyük olan kolonlar döndürülecektir..