08 December 2016

ADO.Net Connected Mimari

Bu bağlantı modelinde uygulama veritabanına veri çekme süresince bağlı kalır. Bu aslında bir dezavantajdır. Sürekli bağlı olması zorunluluğundan dolayı SQL sürekli meşgul olur.

Connected mimari ile veri çekebilmek için SqlCommand ile ConnectionString yazılır ve veriler SqlDataReader ile okunur.

Connected mimarinin avantajlarından bir tanesi sqlden alınan verilerin sürekli en güncel veriler olmasıdır. Yapılan bütün değişikler direk veritabanına yansıdığı için veri alınacağı zaman da en güncel veriler gelir. Connected yapıda disconnected yapıya göre veriler daha hızlı çekilir.

Örnek:

protected void Page_Load(object sender, EventArgs e)
 {
 //Veritabanına sqlConnection objesiyle bağlanıyoruz.
 SqlConnection sqlcon = new SqlConnection("server=.;database=northwind;
 trusted_connection=true");

//yazmış olduğumuz sorguları veritabanına iletiyoruz
 SqlCommand sqlcmd = new SqlCommand("select * from products", sqlcon);

//Bağlantıyı açıyoruz
 sqlcon.Open();

//SqlDataReader ile verileri okuyoruz
 SqlDataReader sdr = sqlcmd.ExecuteReader();

//Repeater'a aktarıyoruz
 Repeater1.DataSource = sdr;
 Repeater1.DataBind();

//Bağlantıyı kapatıyoruz
 sqlcon.Close();
}

http://www.connectionstrings.com/ adresinden ConnectionStrings Syntaxlarını inceleyebilirsiniz. Yukarıdaki bir şekilde bağlantı güvenli değil. Günevli bir bağlantı için Web.Config dosyamızın içinde CoonectionString tanımlamalıyız:

<configuration>
 <connectionStrings >
 <add name="NorthwindConn" connectionString="server=.;database=northwind;trusted_connection=true"/>
</connectionStrings>
 <system.web>
 <compilation debug="true" targetFramework="4.0" />
 </system.web>
</configuration>

Ve daha sonra sayfamızın Load’na yazdığımız kodu değiştirmeliyiz:

SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConn"].ConnectionString);

Bu da HTML Kısmı:

<asp:Repeater ID="Repeater1" runat="server">
 <ItemTemplate>
 <div><%#Eval("ProductName") %></div>
 </ItemTemplate>
 </asp:Repeater>

Yukarıdaki örnekte ExecuteReader() metoduyla tablodaki tüm bilgilere erişilip bu bilgiler okuyucu nesnesine aktarılmıştır.