• 02-04-2009, 20:02:52
    #1
    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.
  • 25-04-2009, 18:13:30
    #2
    arkadaşlar bunu vb ile da yapabilrmiyiz.
    Nette o kadar arştırdım vb database class ı bulaamdım
    teşekkürler
  • 25-04-2009, 19:55:21
    #3
    konu güncel arkadaşalr ve önemli ve acil böle bir class lazım varsa eger tabii
    yada en azından asp.net de vb ile class yazma hakınd kaynak da olabilir
    teşekkürler ilginiz için
  • 26-04-2009, 05:23:52
    #4
    doctor_cmptr adlı üyeden alıntı: mesajı görüntüle
    konu güncel arkadaşalr ve önemli ve acil böle bir class lazım varsa eger tabii
    yada en azından asp.net de vb ile class yazma hakınd kaynak da olabilir
    teşekkürler ilginiz için
    biraz uzun bir yazı alıntıdır arkadaşlar


    Ö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 ...
  • 26-04-2009, 17:09:52
    #5
    İnsan bir şeye kafayı takınca vala oluyor çözümü buldum:
    database.vb
    Alıntı
    Imports System.Data.OleDb
    Imports System.Data

    Public Class cDatabase

    Dim eConn As String

    'database connection string atanıyor...
    Public Sub New(ByVal sConn As String)
    eConn = sConn
    End Sub

    'Sql ifademizi çalıştırmaya yarar...
    Public Sub ExecuteQuery(ByVal sQuery As String)


    Dim conn As OleDbConnection
    Dim db As OleDbCommand

    conn = New OleDbConnection(eConn)
    conn.Open()
    db = New OleDbCommand(sQuery, conn)
    db.ExecuteNonQuery()

    conn.Close()
    db.Dispose()

    End Sub

    'database e veri yazma...
    Public Sub sqlInsert(ByVal dataNames(), ByVal dataValues(), ByVal tableName)

    Dim sqlNames As String
    Dim sqlValues As String
    Dim x As Integer

    sqlNames = "INSERT INTO " & tableName & "("
    For x = 0 To UBound(dataNames)
    If x <> UBound(dataNames) Then
    sqlNames = sqlNames & Replace(dataNames(x), "'", "''") & ", "
    sqlValues = sqlValues & "'" & Replace(dataValues(x), "'", "''") & "', "
    Else
    sqlNames = sqlNames & Replace(dataNames(x), "'", "''") & ") VALUES("
    sqlValues = sqlValues & "'" & Replace(dataValues(x), "'", "''") & "')"
    End If
    Next

    ExecuteQuery(sqlNames & sqlValues)

    End Sub

    'databse update işlemi...
    Public Sub sqlUpdate(ByVal dataNames(), ByVal dataValues(), ByVal tableName, ByVal condition)

    Dim sql As String
    Dim x As Integer

    sql = "UPDATE " & tableName & " SET "
    For x = 0 To UBound(dataNames)
    If x <> UBound(dataNames) Then
    sql = sql & dataNames(x) & "= '" & Replace(dataValues(x), "'", "''") & "', "
    Else
    sql = sql & dataNames(x) & "= '" & Replace(dataValues(x), "'", "''") & "' "
    End If
    Next
    sql = sql & condition

    ExecuteQuery(sql)

    End Sub

    'database den veri okuma işlemi.....
    Public Function sqlSelect(ByVal sQuery As String) As OleDbDataReader

    Dim conn As OleDbConnection
    Dim db As OleDbCommand
    Dim rs As OleDbDataReader

    conn = New OleDbConnection(eConn)
    conn.Open()
    db = New OleDbCommand(sQuery, conn)
    rs = db.ExecuteReader(CommandBehavior.CloseConnection)
    Return rs

    End Function

    End Class
    Örnek kullanımı:
    Alıntı
    Dim cDB As New cDatabase("Provider=Microsoft.Jet.OLEDB.4.0; DATA Source=" & Server.MapPath("App_Data/db.mdb"))

    Dim rs As OleDbDataReader
    rs = cDB.sqlSelect("SELECT * FROM uyeler where id=2 ")
    If rs.Read Then
    Response.Write(rs("uye_adi"))
    End If

    rs.Close()
    rs = Nothing
  • 27-04-2009, 02:22:21
    #6
    Çözdükten sonra paylaştığın için teşekkürler Konu böylece daha içerikli oldu.
  • 27-04-2009, 02:24:56
    #7
    Bende bu şekilde kullanıyorum aslında öğrendiğimiz kütüphaneleri her yerde çağırmaktı çok iyi bir programcı dostum böyle yazmamı tavsiye etti artık el alışkanlığı devam ediyor ama fark etmez bence zaten c/p
  • 27-04-2009, 14:51:31
    #8
    Şu .Net'i öğrenmeyi çok istiyorum. 0 dan başlıycak biri için önerdiğiniz kaynak var mı arkadaşlar?
  • 28-04-2009, 14:37:07
    #9
    Burası ve Burası Asp.NET Site Yapıyorum başlıklı 2'li bir makale serim var. MasterPage kullanımı ile ilgili r10 üzerinde burda bir makalem var. Ayrıca şurda bilgeadam ın ders notları var.

    Sen yeterki öğrenmek iste. Kalan ömrümü sana kaynak üretmeye harcarım

    Saygılarımla.