Yenilenen Yüzü İle FrmHigH.Com Sizlerle..
register


FrmHigh.com l ANASAYFA »ForumHigh - Programlama ve Webmaster »Yazılım Mimarisi »Database Programlama » SQL'de Tarih Kullanmak

SQL'de Tarih Kullanmak

Database Programlama kategorisi içerisinden SQL'de Tarih Kullanmak konusunu görüntülemektesiniz, 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 …


Cevapla

 

LinkBack Seçenekler Stil
Alt 10-13-2007, 00:31   #1 (permalink)
Profil Bilgileri
Administraktör

MuratCabukS - ait Kullanıcı Resmi (Avatar)
 
Durumu: Çıkış Yapmış
Üyelik tarihi: Sep 2007
Üye No: 1
Nerden: Mersin
Mesajlar: 10,735
Tecrübe Puanı: 100000
Rep Puani: 198705
Rep Derecesi: MuratCabukS seviye 50MuratCabukS seviye 50MuratCabukS seviye 50MuratCabukS seviye 50MuratCabukS seviye 50MuratCabukS seviye 50MuratCabukS seviye 50MuratCabukS seviye 50MuratCabukS seviye 50MuratCabukS seviye 50MuratCabukS seviye 50
Ruh Halim:
Standart SQL'de Tarih Kullanmak

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.
Frmhigh.Com - SQL'de Tarih Kullanmak
Ö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;D ata 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(So nTarih);

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

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 4SQLde Tarih Kullanmakorgula 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 .

<------------------------------------------------------------------------------------------->



Oyunu artık benim kurallarımla oynayacağız...
  Alıntı ile Cevapla
Cevapla

Seçenekler
Stil

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


Benzer Konular

Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
isave suyu az kullanmak ExcLuBer Bilim & Teknoloji 0 10-14-2007 15:17
Taş Devrinde Pc Kullanmak Serhat271 Komik Resimler 2 10-14-2007 12:40
Tarih için faydalı programlar ( Tarih Çevirici,Osmanlı.exe... ) BuRaQ Tarih 0 10-13-2007 21:43
DTD Kullanmak MuratCabukS Xml 0 10-13-2007 00:15


Bütün Zaman Ayarları WEZ +3 olarak düzenlenmiştir. Şu Anki Saat: 04:54 .


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.3.0
FrmHigh.Com

Web Stats