Selamlar...
C#'ta uygulama geliştirirken her uygulama için kullandığım bir Veritabanı işlemleri sınıfı var.
Belki başkalarının da işine yarar diyerek paylaşıyorum.
Hem Stored Procedure, hem de normal sql sorgusunu çalıştıracak metotlar içeriyor.
 
VeritabaniIslemleri.CS
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
 
namespace WebPortal.Veritabani
{
    public class VeritabaniIslemleri : IDisposable
    {
        #region Private Members
        private SqlConnection _baglanti;
        private SqlCommand _sqlCommand;
        private SqlDataReader _sqlDataReader;
        private SqlDataAdapter _sqlDataAdapter;
        private DataSet _dataSet { get; set; }
        private SqlTransaction _sqlTransaction;
        private int _beklemeSuresiSaniye;
        #endregion Private Members
 
        #region Public Members
        /// <summary>
        /// 
        /// </summary>
        public SqlTransaction SqlTransaction
        {
            get { return _sqlTransaction; }
            set { _sqlTransaction = value; }
        }
 
        /// <summary>
        /// 
        /// </summary>
        public SqlCommand SqlCommand
        {
            get { return _sqlCommand; }
            set { _sqlCommand = value; }
        }
 
        /// <summary>
        /// 
        /// </summary>
        public SqlConnection Baglanti
        {
            get { return _baglanti; }
            set { _baglanti = value; }
        }
 
        /// <summary>
        /// 
        /// </summary>
        public int BeklemeSuresiSaniye
        {
            get { return _beklemeSuresiSaniye; }
            set { _beklemeSuresiSaniye = value; }
        }
        #endregion Public Members
 
        #region Constructor
        /// <summary>
        /// 
        /// </summary>
        public VeritabaniIslemleri(VeritabaniSecimleri vtSecim)
        {
            this._baglanti = new SqlConnection(getirBaglantiCumlesi(vtSecim));
            baglantiKontrol();
        }
 
        /// <summary>
        /// 
        /// </summary>
        public VeritabaniIslemleri(IsolationLevel isolationLevel, VeritabaniSecimleri vtSecim)
        {
            this._baglanti = new SqlConnection(getirBaglantiCumlesi(vtSecim));
            baglantiKontrol();
            this.SqlTransaction = this._baglanti.BeginTransaction(isolationLevel);
        }
        #endregion Constructor
 
        #region Private Methods
        private string getirBaglantiCumlesi(VeritabaniSecimleri vtSecim)
        {
            switch (vtSecim)
            {
                case VeritabaniSecimleri.Veritabani_1:
                    return ConfigurationManager.ConnectionStrings["Veritabani_1"].ConnectionString;
                case VeritabaniSecimleri.Veritabani_2:
                    return ConfigurationManager.ConnectionStrings["Veritabani_2"].ConnectionString;;
                default:
                    return ConfigurationManager.ConnectionStrings["Veritabani_1"].ConnectionString;
            }
        }
 
        private SqlConnection baglantiKontrol()
        {
            if (this._baglanti.State == ConnectionState.Closed || this._baglanti.State == ConnectionState.Broken)
            {
                this._baglanti.Open();
            }
            return this._baglanti;
        }
 
        private void sorguyuLogla(string strSql, int kullaniciId)
        {
            kapatBaglanti(this.SqlTransaction, this.SqlCommand);
            this._baglanti = new SqlConnection(getirBaglantiCumlesi(VeritabaniSecimleri.WebPortal));
            string sql = " INSERT INTO [dbo].[WEB_HATALISORGULOG](SorguTarihi, IslemKullaniciId, SorguCumlesi) ";
            sql += " VALUES(GETDATE()," + kullaniciId + ",'" + strSql.Replace("'", "''") + "') ";
            this.ExecuteInsertUpdateDelete(sql);
        }
 
        private bool disposed = false; // to detect redundant calls
 
        protected virtual void Dispose(bool disposing)
        {
            if (!disposed)
            {
                if (disposing)
                {
                    if (this._baglanti != null)
                    { this._baglanti.Dispose(); }
                    if (this.SqlCommand != null)
                    { this.SqlCommand.Dispose(); }
                    if (this._dataSet != null)
                    { this._dataSet.Dispose(); }
                    if (this._sqlDataReader != null)
                    { this._sqlDataReader.Dispose(); }
                    if (this._sqlDataAdapter != null)
                    { this._sqlDataAdapter.Dispose(); }
                    if (this.SqlTransaction != null)
                    { this.SqlTransaction.Dispose(); }
                }
                disposed = true;
            }
        }
        #endregion Private Methods
 
        #region Public Methods
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public SqlConnection kapatBaglanti(SqlTransaction trn, SqlCommand cmd)
        {
            if (this._baglanti.State == ConnectionState.Open)
            {
                this._baglanti.Close();
            }
            if (trn != null)
            {
                trn.Dispose();
            }
            if (cmd != null)
            {
                cmd.Dispose();
                cmd = null;
            }
            return this._baglanti;
        }
 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="spIsim"></param>
        /// <param name="spParametre"></param>
        /// <returns></returns>
        public DataTable ReturnDataTable(string spIsim, SqlParameter spParametre)
        {
            try
            {
                baglantiKontrol(); // Aciksa zaten tekrar acmiyor...
                this.SqlCommand = new SqlCommand()
                {
                    Connection = this._baglanti,
                    CommandType = CommandType.StoredProcedure,
                    CommandText = spIsim
                };
                if (this.SqlTransaction != null)
                {
                    this.SqlCommand.Transaction = this.SqlTransaction;
                }
                if (spParametre != null)
                    this.SqlCommand.Parameters.Add(spParametre);
 
                this._sqlDataAdapter = new SqlDataAdapter(this.SqlCommand);
                DataTable dt = new DataTable();
                this._sqlDataAdapter.Fill(dt);
                return dt;
            }
            catch (Exception Ex)
            {
                throw Ex;
            }
            finally
            {
                kapatBaglanti(this.SqlTransaction, this.SqlCommand);
            }
        }
 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="spIsim"></param>
        /// <param name="spParametreleri"></param>
        /// <returns></returns>
        public DataTable ReturnDataTable(string spIsim, List<SqlParameter> spParametreleri)
        {
            try
            {
                baglantiKontrol(); // Aciksa zaten tekrar acmiyor...
                this.SqlCommand = new SqlCommand()
                {
                    Connection = this._baglanti,
                    CommandType = CommandType.StoredProcedure,
                    CommandText = spIsim
                };
                foreach (SqlParameter param in spParametreleri)
                {
                    this.SqlCommand.Parameters.Add(param);
                }
                this._sqlDataAdapter = new SqlDataAdapter(this.SqlCommand);
                DataTable dt = new DataTable();
                this._sqlDataAdapter.Fill(dt);
                return dt;
            }
            catch (Exception Ex)
            {
                throw Ex;
            }
            finally
            {
                kapatBaglanti(this.SqlTransaction, this.SqlCommand);
            }
        }
 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="spIsim"></param>
        /// <param name="spParametreleri"></param>
        /// <returns></returns>
        public DataSet ReturnDataSet(string spIsim, SqlParameter spParametre)
        {
            try
            {
                baglantiKontrol(); // Aciksa zaten tekrar acmiyor...
                this.SqlCommand = new SqlCommand()
                {
                    Connection = this._baglanti,
                    CommandType = CommandType.StoredProcedure,
                    CommandText = spIsim
                };
                if (spParametre != null)
                    this.SqlCommand.Parameters.Add(spParametre);
 
                this._sqlDataAdapter = new SqlDataAdapter(this.SqlCommand);
 
                this._dataSet = new DataSet();
                this._dataSet.Reset();
                this._sqlDataAdapter.Fill(this._dataSet);
                return this._dataSet;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                kapatBaglanti(this.SqlTransaction, this.SqlCommand);
            }
        }
 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="spIsim"></param>
        /// <param name="spParametreleri"></param>
        /// <returns></returns>
        public DataSet ReturnDataSet(string spIsim, List<SqlParameter> spParametreleri)
        {
            try
            {
                baglantiKontrol(); // Aciksa zaten tekrar acmiyor...
                this.SqlCommand = new SqlCommand()
                {
                    Connection = this._baglanti,
                    CommandType = CommandType.StoredProcedure,
                    CommandText = spIsim
                };
                foreach (SqlParameter param in spParametreleri)
                {
                    this.SqlCommand.Parameters.Add(param);
                }
                this._sqlDataAdapter = new SqlDataAdapter(this.SqlCommand);
 
                this._dataSet = new DataSet();
                this._dataSet.Reset();
                this._sqlDataAdapter.Fill(this._dataSet);
                return this._dataSet;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                kapatBaglanti(this.SqlTransaction, this.SqlCommand);
            }
        }
 
        /// <summary>
        /// Baglantiyi cagiran metot kapatacak...
        /// </summary>
        /// <param name="spIsim"></param>
        /// <param name="spParametre"></param>
        /// <returns></returns>
        public int ExecuteInsertUpdateDelete(string spIsim, SqlParameter spParametre)
        {
            int etkilenenKayitSayisi = 0;
            try
            {
                baglantiKontrol();
                this.SqlCommand = new SqlCommand()
                {
                    Connection = this._baglanti,
                    CommandType = CommandType.StoredProcedure,
                    CommandText = spIsim,
                    Transaction = this.SqlTransaction
                };
                this.SqlCommand.Parameters.Add(spParametre);
                etkilenenKayitSayisi = this.SqlCommand.ExecuteNonQuery();
                if (etkilenenKayitSayisi == 0)
                {
                    string strParametreler = spParametre.ParameterName + "|" + spParametre.Value;
                    throw new Exception("Ekleme/Guncelleme/Silme islemi tamamlanamadi.(" + strParametreler + ")");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                //this.SqlCommand.Dispose();
                //this.SqlCommand = null;
                //kapatBaglanti();
            }
            return etkilenenKayitSayisi;
        }
 
        /// <summary>
        /// Baglantiyi cagiran metot kapatacak...
        /// </summary>
        /// <param name="spIsim"></param>
        /// <param name="spParametreleri"></param>
        /// <returns></returns>
        public int ExecuteInsertUpdateDelete(string spIsim, List<SqlParameter> spParametreleri)
        {
            int etkilenenKayitSayisi = 0;
            try
            {
                baglantiKontrol();
                this.SqlCommand = new SqlCommand()
                {
                    Connection = this._baglanti,
                    CommandType = CommandType.StoredProcedure,
                    CommandText = spIsim,
                    Transaction = this.SqlTransaction
                };
                foreach (SqlParameter param in spParametreleri)
                {
                    this.SqlCommand.Parameters.Add(param);
                }
                etkilenenKayitSayisi = this.SqlCommand.ExecuteNonQuery();
                if (etkilenenKayitSayisi == 0)
                {
                    string strParametreler = String.Join("#", spParametreleri.Select(o => (o.ParameterName + "|" + o.Value)));
                    throw new Exception("Ekleme/Guncelleme/Silme islemi tamamlanamadi.(" + strParametreler + ")");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                //this.SqlCommand.Dispose();
                //this.SqlCommand = null;
                //kapatBaglanti();
            }
            return etkilenenKayitSayisi;
        }
 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="strSql"></param>
        /// <returns></returns>
        public DataSet ReturnDataSet(string strSql)
        {
            try
            {
                baglantiKontrol(); // Aciksa zaten tekrar acmiyor...
                this._sqlDataAdapter = new SqlDataAdapter(strSql, this._baglanti);
                this._dataSet = new DataSet();
                this._dataSet.Reset();
                this._sqlDataAdapter.Fill(this._dataSet);
                return this._dataSet;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                kapatBaglanti(this.SqlTransaction, this.SqlCommand);
            }
        }
 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="strSql"></param>
        /// <returns></returns>
        public DataTable ReturnDataTable(string strSql, int kullaniciId)
        {
            this.SqlCommand = new SqlCommand();
            try
            {
                baglantiKontrol(); // Aciksa zaten tekrar acmiyor...
                this.SqlCommand.Connection = this._baglanti; // acBaglanti();
                this.SqlCommand.CommandText = strSql;
                if (this.BeklemeSuresiSaniye > 0)
                {
                    this.SqlCommand.CommandTimeout = this.BeklemeSuresiSaniye;
                }
                this._sqlDataAdapter = new SqlDataAdapter(this.SqlCommand);
                DataTable dt = new DataTable();
                this._sqlDataAdapter.Fill(dt);
                return dt;
            }
            catch (Exception Ex)
            {
                sorguyuLogla(strSql, kullaniciId);
                throw Ex;
            }
            finally
            {
                kapatBaglanti(this.SqlTransaction, this.SqlCommand);
            }
        }
 
        /// <summary>
        /// Baglantiyi cagiran metot kapatacak...
        /// </summary>
        /// <param name="strSql"></param>
        public int ExecuteInsertUpdateDelete(string strSql)
        {
            int etkilenenKayitSayisi = 0;
            try
            {
                baglantiKontrol(); // Aciksa zaten tekrar acmiyor...
                this.SqlCommand = new SqlCommand()
                {
                    Connection = this._baglanti,
                    CommandType = CommandType.Text,
                    CommandText = strSql
                };
                etkilenenKayitSayisi = this.SqlCommand.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                //this.SqlCommand.Dispose();
                //this.SqlCommand = null;
                //kapatBaglanti();
            }
            return etkilenenKayitSayisi;
        }
 
        /// <summary>
        /// Baglantiyi cagiran metot kapatacak...
        /// </summary>
        /// <param name="strSql"></param>
        /// <returns></returns>
        public SqlDataReader ReturnDataReader(string strSql)
        {
            try
            {
                baglantiKontrol(); // Aciksa zaten tekrar acmiyor...
                this.SqlCommand = new SqlCommand()
                {
                    Connection = this._baglanti,
                    CommandType = CommandType.Text,
                    CommandText = strSql
                };
                this._sqlDataReader = this.SqlCommand.ExecuteReader();
                return this._sqlDataReader;
 
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                //this.SqlCommand.Dispose();
                //this.SqlCommand = null;
                //kapatBaglanti();
            }
        }
 
        /// <summary>
        /// 
        /// </summary>
        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }
 
        #endregion Public Methods
    }
     
        /// <summary>
    /// 
    /// </summary>
    [Serializable]
    public enum VeritabaniSecimleri : byte
    {
        /// <summary>
        /// Hiçbiri
        /// </summary>
        Hicbiri = 0,
 
        /// <summary>
        /// Birinci veritabani.
        /// </summary>
        Veritabani_1 = 1,
 
        /// <summary>
        /// Ikinci veritabani.
        /// </summary>
        Veritabani_2 = 2,
    }
}
 
Select sorgularını aşağıdaki şekilde kullanabiliriz:
DataTable dtParametre = null;
using (VeritabaniIslemleri vtIslem = new VeritabaniIslemleri(VeritabaniSecimleri.Veritabani_1))
{
SqlParameter parametre = new SqlParameter() { ParameterName = "@ParametreAdi", Value = parametreAdi, Direction = ParameterDirection.Input, DbType = DbType.String };
dtParametre = vtIslem.ReturnDataTable("GETIRPARAMETRE", parametre);
}
 
ya da 
DataTable dt1;
using (VeritabaniIslemleri vtIslem = new VeritabaniIslemleri(VeritabaniSecimleri.Veritabani_2))
vtIslem.BeklemeSuresiSaniye = 120;
dt1= vtIslem.ReturnDataTable(strSql, kullanici.Id);
}
 
Güncelleme/Silme/Ekleme sorgularını da aşağıdaki şekilde kullanabiliriz:
VeritabaniIslemleri vtIslem = new VeritabaniIslemleri(IsolationLevel.ReadUncommitted, VeritabaniSecimleri.Veritabani_2); ;
try
{
// Herhangi bir guncelleme isleminde hata olusursa Exception bloguna gidecegi icin, ya tum islemler gerceklesecek,
// ya da hic biri gerceklesmeyecek.
List<SqlParameter> lstParametreler = new List<SqlParameter>();
lstParametreler.Add(new SqlParameter() { ParameterName = "@Id", Value = Id, Direction = ParameterDirection.Input, DbType = DbType.Int32 });
lstParametreler.Add(new SqlParameter() { ParameterName = "@Id", Value = Id, Direction = ParameterDirection.Input, DbType = DbType.Int32 });
int etkilenenKayitSayisi = vtIslem.ExecuteInsertUpdateDelete("MUSTERIGUNCELLE", lstParametreler);
lstParametreler = new List<SqlParameter>();
lstParametreler.Add(new SqlParameter() { ParameterName = "@Id", Value = Id, Direction = ParameterDirection.Input, DbType = DbType.Int32 });
etkilenenKayitSayisi = vtIslem.ExecuteInsertUpdateDelete("ADRESGUNCELLE", lstParametreler);
vtIslem.SqlTransaction.Commit();
}
catch (Exception ex)
{
vtIslem.SqlTransaction.Rollback();
throw new Exception("İşlem tamamlanamadı!(" + ex.Message + ")");
}
finally
{
vtIslem.kapatBaglanti(vtIslem.SqlTransaction, vtIslem.SqlCommand);
}
 
Saygılar...
# Kategoriler : C# Sql Server Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz

Yorumlar

Yorum Eklenmemiş...

Yorum Yaz

Adınız: *
E-Mail Adresiniz: *
Web Sitesi:
Yorum: *
Güvenlik Kodu: *
 
Arama
  Ara
Sayfalar
Takvim
<December 2018>
SMTWTFS
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345
Bağlantılar