Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Feryat Olcay
Feryat Olcay
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
15 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  ADO.NET/SQL Feryat Olcay
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : ADO.NET/SQL
Yayınlanma Tarihi : 27.4.2004
Okunma Sayısı : 40618
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 26.12.2024
Turhal Temizer
Mac OS/X Removing CUDA 26.12.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 26.12.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 26.12.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
SQL'de Tarih Kullanımı
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bilişim sektörünün gelişmesinde en önemli faktörlerden bir tanese de rekabettir. Rekabet ile var olan ve büyük diye adlandırdığımız firmalar ihtiyaçlara farklı çözümler bularak var olan pastadan daha büyük pay almaya çalışırlar.Fakat bu farklı çözümleri oluştururken standartlara uymaktan vaz geçip kendi standartlarını yaratarak müşteriyi kendilerine bağımlı kılmayı yeğlerler.

Standarlara uymama sorunu genellikle veritabanlarında karşımıza çıkıyor. Veritabalarında veri tipleri ve sintakslarının farklı olması bizi veritabanı bağımlı kod yazmak zorunda bırakır.Veri tabanlarında kod içinde dönüşümü ve kullanılması en güç veri tipi tarih tipleridir. Bu makalemizde C# programa dili ile Oracle , MS SQL Server ve Access gibi sık kullandığımız veritabanlarında tarih kullanımını inceleyeceğiz.

Öncelikle kullanıcı arayüzünden veritabanına gönderilmesini inceleyelim. Access , MS SQL Server yada Oracle databasezlerinde tablomuzu oluşturalım.Tablomuz aşağıdaki alanlarda oluşsun.

ID integer,

ADI varchar(50)

DOGUM_TARIHI

Veri tabanı bağlantısını sağlamak için Baglatı fonksiyonunu oluşturalım.

 public static OleDbConnection Baglanti(){

   stringProvider="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Database\\deneme.mdb";

   //Provider="Provider=SQLOLEDB;data source=localhost;initial catalog=deneme;integrated security=sspi";

   //Provider="Provider=OraOLEDB.Oracle.1;data source=spatial.deneme.com.tr;User ID=deneme;Password = deneme";

   OleDbConnection myConnection = new OleDbConnection();

   myConnection.ConnectionString = Provider;

    if(myConnection.State == ConnectionState.Closed || myConnection == null)

        myConnection.Open(); return myConnection;

 }

Kodl 1: Veri tabanı bağlantıs

Veri tabanları için oluşturduğumuz tarih fonksiyonlarını oluşturalım.Kullanacağınız veritabanına göre hangisini çağırmak istediğinize kod içerisinde karar verebilirsiniz.

//Oracle için kullanabileceğiniz Fonksiyon
 public static string DateTime_forOracle(DateTime value)
 {
   if(value==Convert.ToDateTime("01.01.0001"))
      return "NULL";
   else
      return "TO_DATE(’" + Convert.ToDateTime(value).ToString("dd-MM-yyyy") + "’,’dd.mm.yyyy’)";

 }

//Microsoft SQL Server için Fonksiyon
 public static string DateTime_forSQLServer(DateTime value)
 {
   if(value==Convert.ToDateTime("01.01.0001"))
      return "NULL";
   else
  //smalldatetime tipi kullanıma göre değiştirilebilir
     return "Convert(smalldatetime,’" + Convert.ToDateTime(value).ToString("MM-dd-yyyy") + "’)";

}

 //Access için kullanabileceğiniz Fonksiyon
 public static string DateTime_forAccess(DateTime value)
 {
   if(value==Convert.ToDateTime("01.01.0001"))
      return "NULL";
   else
   {
     string Time = "";
     Time = value.ToString("#MM/dd/yyyy#");
     Time = Time.Replace(".","/");
     return Time;

 }  


Kod 2: Fonksiyonlar Yukarıda yazdığımız fonksiyonları bir sınıfta birleştirirsek bir nevi kendi kutuphanemizi oluşturmuş oluruz.

using System;
using System.Data;
using System.Data.OleDb;

namespace TarihDonusturme
{
/// <summary>
/// Summary description for Fonksiyonlar.
/// </summary>
 public class Fonksiyonlar
 { 

 public static OleDbConnection Baglanti()
 {

    stringProvider="";Provider="Provider=Microsoft.Jet.OLEDB.4.0;DataSource= C:\\Database\\BELOTOM.mdb";</P> < Palign=left>   < /FONT>  

  //Provider="Provider=SQLOLEDB;data source=localhost;initial catalog=deneme;integrated security=sspi";
   //Provider="Provider=OraOLEDB.Oracle.1;data source=spatial.borat.com.tr;User ID=belotom;Password = belotom";

    OleDbConnection myConnection = new OleDbConnection();
    myConnection.ConnectionString = Provider;
    if(myConnection.State == ConnectionState.Closed || myConnection == null)
    myConnection.Open();

   return myConnection;

 }

//Oracle için kullanabileceğiniz Fonksiyon
 public static string DateTime_forOracle(DateTime value)
 {
    if(value==Convert.ToDateTime("01.01.0001"))
        return "NULL";
    else
        return "TO_DATE(’" + Convert.ToDateTime(value).ToString("dd-MM-yyyy") + "’,’dd.mm.yyyy’)";

 }

//Access için kullanabileceğiniz Fonksiyon
 public static string DateTime_forAccess(DateTime value)
 {
    if(value==Convert.ToDateTime("01.01.0001"))
       return "NULL";
    else
    {
       string Time = "";
       Time = value.ToString("#MM/dd/yyyy#");
       Time = Time.Replace(".","/");
       return Time;

    }  

}

//Microsoft SQL Server için Fonksiyon
 public static string DateTime_forSQLServer(DateTime value)
 {
   if(value==Convert.ToDateTime("01.01.0001"))
      return "NULL";
   else//smalldatetime tipi kullanıma göre değiştirilebilir

     return "Convert(smalldatetime,’" + Convert.ToDateTime(value).ToString("MM-dd-yyyy") + "’)";

  }
 }
}


Kod 2: Fonksiyonların birleştirilmesi

Sorgulama yapabileceğimiz örnek bir sınıf (class) oluşturalım.Deneme sınıfında private değişkenler, public değişkenler, yapıcılar ve tarih fonksiyonunu gibi kullanacağımız fonksiyonlar yer almakta.

using System;
using System.Data;
using System.Data.OleDb;

namespace TarihDonusturme
{
/// <summary>
/// Summary description for Deneme.
/// </summary>
// Deneme Classı
 public class DENEME
 {
   // private değişkenlerimiz
   private System.Int32 _ID;
   private System.String _ADI;
   private System.DateTime _DOGUM_TARIHI;

  // public değişkenlerimiz
   public System.Int32 ID
   {
      get{return _ID;}
   }

   public System.String ADI
   {
      get{return _ADI.Trim();}
      set{_ADI= value;}
   }

   public System.DateTime DOGUM_TARIHI
   {
      get{return _DOGUM_TARIHI;}
      set{_DOGUM_TARIHI= value;}
   }

// Yapıcılarımız(constructors)
   public DENEME()
   {
      Yeni();
   }

// Private fonksiyonlar

   private void Yeni() {
      _ID = 0;
      _ADI = "";
      _DOGUM_TARIHI = Convert.ToDateTime("01.01.0001");}

   public static DENEME[] TarihSorgula( System.DateTime Ilk_Tarih , System.DateTime SonTarih)
   {
   //Kullanacağımız database göre tarih fonksiyonunu değiştiebiliriz
string SQL = "SELECT * FROM DENEME WHERE DOGUM_TARIHI >="+Fonksiyonlar.DateTime_forAccess(Ilk_Tarih) +" AND DOGUM_TARIHI<="+Fonksiyonlar.DateTime_forAccess(SonTarih);

      System.Data.OleDb.OleDbDataAdapter _Adapter=new System.Data.OleDb.OleDbDataAdapter();
     _Adapter.SelectCommand=new System.Data.OleDb.OleDbCommand(SQL);
     _Adapter.SelectCommand.Connection=Fonksiyonlar.Baglanti();

     System.Data.DataTable _Table=new System.Data.DataTable();
    _Adapter.Fill(_Table);

    DENEME[] _Deneme = new DENEME[_Table.Rows.Count];
    for(int i =0 ; i <_Table.Rows.Count ;i++)
    {
      _Deneme[i] = new DENEME();
      _Deneme[i]._ID = Convert.ToInt32(_Table.Rows[i]["ID"]);
      _Deneme[i]._ADI = Convert.ToString(_Table.Rows[i]["ADI"]);
      _Deneme[i]._DOGUM_TARIHI = Convert.ToDateTime(_Table.Rows[i]["DOGUM_TARIHI"]);
    }
     return _Deneme;

 }

}

}

Kod 3: Deneme adlı sınıf üzerinde SQL cümlesi ve tarih fonksiyonunu kullanılması Son olarak ta yapmış olduğumuz fonksiyonların çalışması için örnek bir  form oluşturalım.




private void button1_Click(object sender, System.EventArgs e) {

 try {

  DENEME[] _TempList ;

  _TempList = DENEME.TarihSorgula(Convert.ToDateTime(textBoxIlk_Tarih.Text),Convert.ToDateTime (textBoxSon_Tarih.Text));

   listViewListe.Items.Clear();

   ListViewItem _li;

   for(int i = 0 ; i < _TempList.Length ;i++)

   {   

       _li = new ListViewItem();

       _li.Text = _TempList[i].ID.ToString();

       listViewListe.Items.Add(_li);

       _li.SubItems.Add(_TempList[i].ADI);

       _li.SubItems.Add(_TempList[i].DOGUM_TARIHI.ToString());

   }

 }

catch(Exception ex) { MessageBox.Show(ex.Message); }

}



Kod 4:Sorgula buttonunun altına yazacağımız kod.

Bu ve buna benzer fonksiyonlar diğer kullanılan veritabanları için de yapılabilir. Böylelikle bizi zaman kaybından ve zorluklardan birazda olsa kurtarmış olur .

Makale:
SQL'de Tarih Kullanımı ADO.NET ve SQL Feryat Olcay
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor