Son Haberler
Anasayfa / Yazılım / ASP.NET / ConfigurationManager Sınıfının Kullanımı

ConfigurationManager Sınıfının Kullanımı

WEB projelerimizde ya da Windows projelerimizde sürekli olarak veritabanına bağlanmak zorunda kalabiliriz. Dolayısı ile her forum sayfasında her web formu sayfasında bu bağlantılarımızı tekrar ve tekrar yazmamız gerekir. Diyelim ki projemiz binlerce satır koddan oluşuyor, defalarca kez veritabanından veri çekiyoruz. Gün geldi çattı ve bizim veritabanımızın serveri değişti, ne olacak bu binlerce kod içinde veritabanı bağlantısını sağlayan kodları bulup bunların her birini ayrı ayrı değişmem gerekecek değil mi? Eğer bu şekilde düz mantık kodlama yaptı isem evet, değişmem gerekecek. Ama ben her şeyimi planlı bir şekilde yaptı isem tabii ki buna gerek kalmayacak. Sadece tek bir noktadan ilgili bağlantı komut satırımı değişmem yeterli olacak. Şimdi bu işlemi ne ile nasıl yapacağız buna değinelim.

Bu işlemi bize sağlaması için öncelikle aklımıza web.config dosyası gelmeli. Bu dosya içinde bir takım ayarlarımı saklayabiliyordum. İşte ben veritabanı bağlantımı sağlayan kod satırını burada saklayacağım. Bu birinci aşamam. İkinci aşamam ise ben bunu projemde kod tarafında istediğim form içinde kullanabilme durumum.. Peki bunu nasıl yapmam gerekiyor? Bunun cevabı da tabii ki ConfigurationManager sınıfını kullanmaktan geçiyor. ConfigurationManager sınfını kullanarak web.config içinde yer alan veritabanı bağlantı komut satırımı yani ConnectionString’imi rahatlıkla projemde istediğim yerde sadece ismini çağırmakla kullanabileceğim. Ve üstte belirttiğim gibi herhangi bir bağlantı değişikliği olması gereken durumda projemdeki tüm bağlantı satırlarını arayıp yerlerini bulup komut satırını değiştirmek yerine sadece Web.Config dosyasına girip ConnectionString’imde ilgili düzenlemeleri yapmam yeterli.

Şimdi bir uygulama ile örnekleyeyim.. Örneğimde Northwnd veritabanına bağlanacağım. Visual Studio’da bir boş WEB projesi açtım. Öncelikle var olan web.config dosyamı açıyorum ve bağlantımı sağlayacak ConnectionString’imi yazıyorum.







    
        
    
  
    
  

Görüldüğü gibi ConnectionStrings tagi altında add name diyerek işlemimi tamamladım. Şimdi ConfigurationManager sınıfını kullanarak istediğim gibi bu ConnectionString’e NorthwndBaglantisi adı ile ulaşabilirim.

Örneğimin kod tarafında default aspx sayfam var, bu sayfamda listeleme için Repeater kullanıyorum. Northwind veritabanında Employees tablosunda EmployeeID, LastName ve FirstName bilgilerini çekelim, bu sayfamın kodları :

Default.aspx :

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>





    


    
EmployeeID : <%#Eval("EmployeeID" %>
LastName : <%#Eval("LastName") %>
FirstNane : <%#Eval("FirstName") %>

Web form sayfamızı yazdık şimdi işin kod tarafına geçelim. Dikkat edeceğim yeni bir durum, ConfigurationManager sınıfını kullanabilmem için benim namespace eklemem gerek. Üstteki kısımdaki namespace alanlarına dikkat edelim. Sql.Data.SqlClient namespace’i gibi sonradan Sql.Configuration namespace’i manuel olarak ekledim.

Default.aspx.cs dosyam :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //ConfigurationManager sınıfını kullanarak bağlantımı sağlıyorum, sqlcommand yazıyorum ve sqldataReader nesnemi oluşturuyorum
        string ConnectionString = ConfigurationManager.ConnectionStrings["NorthwndBaglantisi"].ConnectionString;
        SqlConnection conn = new SqlConnection(ConnectionString);
        SqlCommand comm = new SqlCommand("SELECT EmployeeID,LastName,FirstName FROM Employees", conn);
        SqlDataReader reader;
        //Bağlantımı açıyorum
        try
        {
            conn.Open();
            reader = comm.ExecuteReader();
            //DataBinding yapıyorum..
            EmployeesRepeater.DataSource = reader;
            EmployeesRepeater.DataBind();
            reader.Close();
        }
        catch
        {
            Response.Write("Bir hata oluştu");
        }
            //Bağlantımı kapatıyorum.
        finally
        {
            conn.Close();
        }

    }
}

Görüldüğü işlem bu kadar kolay..

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir