using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
/// <summary>
/// Database'imiz ile ilgili tüm işlemler burada.
/// </summary>
public class dbClass
{
static string connString = ConfigurationManager.ConnectionStrings["baglanti"].ConnectionString;
static SqlConnection conn = new SqlConnection(connString);
public dbClass()
{
}
/// <summary>
/// DataSet hemde bu kadar kolay?
/// </summary>
/// <param name="sqlstr"></param>
/// <param name="tabloadi"></param>
/// <returns></returns>
public static DataSet DataSetGetir(string sqlstr, string tabloadi)
{
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sqlstr, conn);
da.Fill(ds, tabloadi);
return ds;
}
/// <summary>
/// İşlemi yap sonuç bekleme.
/// </summary>
/// <param name="sqlstr"></param>
public static void ExecuteNonQuery(string sqlstr)
{
SqlCommand cmd = new SqlCommand(sqlstr, conn);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
try
{
cmd.ExecuteNonQuery();
}
finally
{
conn.Close();
}
}
/// <summary>
/// Kayıt Düzenle işi için.. Yeni bi scalar
/// </summary>
/// <param name="sqlstr"></param>
/// <returns></returns>
public static object ExecuteScalar(string sqlstr)
{
object sonuc;
SqlCommand cmd = new SqlCommand(sqlstr, conn);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
try
{
sonuc = cmd.ExecuteScalar();
}
finally
{
conn.Close();
}
return sonuc;
}
/// <summary>
/// Datareader Döndürür...
/// </summary>
/// <param name="sqlstr"></param>
/// <returns></returns>
public static SqlDataReader ExecuteReader(string sqlstr)
{
SqlDataReader dr;
SqlCommand cmd = new SqlCommand(sqlstr, conn);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection) ;
//Connection ömrü, dr kapatılana kadar.
return dr;
}
}
/// Kullanımı :
Asp.NET Projemize dbClass isminde yeni bir class ekliyoruz ve build ediyoruz.
Normalde yapmamız gereken işlem ;
SqlConnection conn = new SqlConnection("SQL STRİNG");
SqlDataAdapter da = new SqlDataAdapter("select * from musteriler",conn);
DataSet ds = new DataSet();
da.Fill(ds);
dlMusteriler.DataSource = ds;
dlMusteriler.DataBind();
Yukardaki kodlar, bizim dlMusteriler DataListimizi dolduracaktır. Yeni class'ımız sayesinde ;
DataSet ds = dbClass.DataSetGetir("select * from musteriler","musteriler");
dlMusteriler.DataSource = ds;
dlMusteriler.DataBind();
Yarı yarıya fark eden bir kod tasarrufu. Aslında ne fark eder diyebilirsiniz, büyük projelerde bağlantı çok fazla Close,Open,Dispose işlemine girdiğinden bazen Null Exception getirebiliyor beraberinde. Bu şekilde yaptığımız tüm bağlantılar kontrolümüz altında ve kararlı şekilde çalışacaktır.
Saygılarımla.
Asp.NET DBClass - Heryerde bağlantı tanımlamaya son.
12
●2.886
- 26-04-2009, 05:23:52biraz uzun bir yazı alıntıdır arkadaşlardoctor_cmptr adlı üyeden alıntı: mesajı görüntüle
Öncelikle yazacağımız namespace ve class'ları istediğimiz sayfanın codefile'ında, projemiz içinde yer alacak olan App_Code klasörü içinde .cs uzantılı bir dosyada veya bir dll içinde tutabiliriz. Ben, anlatacağım uygulama da App_Code klasörü içinde .cs uzantılı dosyada hazırladım. Hazırladığım dosyanın içeriğine bakacak olursak:
namespace proje
{ public class veritabani { public string baglanti_cumlem = ""; public OleDbConnection baglanti; public veritabani() { baglanti = new OleDbConnection(baglanti_cumlem); } //veritabanı işlemleri yapan metotlar veya özellikler oluşturabiliriz } public class site:veritabani { //burada sitenin parçalarını bir araya getirerek sitemizi oluşturabiliriz. public string yazdir(string metin) { return metin; } } public class yonetim:veritabani { //burada ise yönetim bölümü için yapacaklarımızı hazırlayabiliriz. } }Görüldüğü gibi proje adında namespace ve bu namespace altında kullanacağımız class'lar oluşturuduk. Bu class'lar ile de projemizde kullanacağımız işleri yapacağız. İstediğimiz her türlü işlemi class'lar içinde hazırlayabiliriz. Böylece daha basit karmaşıklıktan uzak hale getirmiş oluyoruz. Mesela veritabanı class'ı ile projemizde kullanacağımız bağlantı nesnesini veya bağlantı cümlesini belirleyebiliyoruz. Diğer class'larda bağlantı nesnesine veya bağlantı cümlesine ulaşmak için ise; veritabanı class'ını nesneyi veya cümleyi kullanacağımız class'lara miras bırakıyoruz. Bu işlemi ortak kullanacağımız tüm özellikler veya nesneler için yapabiliriz.
Oluşturduğumuz namespace ve class'ları ise istediğimiz bir sayfada şu şekilde kullanacağız:
using proje;
public partial class _Default : System.Web.UI.Page { site st; protected void Page_Load(object sender, EventArgs e) { st = new site(); Response.Write(st.yazdir("Deneme")); } }Görüldüğü gibi bu türlü bir yapı kullanmak bizlere birçok kolaylık sağlayacaktır. Projemizde tüm kodları tek bir dosya içinde muhafaza edebilir ve herhangi bir değişiklik durumunda sorunu kısa sürede halledebiliriz. Ayrıca bu tür yapı ile projeleri parçalar halinde nasıl geliştirebilceğimizi, namespace , class ve inheritence gibi kavramları daha iyi anlayabiliriz.
Alıntıdır ... - 28-04-2009, 14:37:07
Konu böylece daha içerikli oldu.