|
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 …
![]() |
| | LinkBack | Seçenekler | Stil |
| | #1 (permalink) |
| 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;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 4 orgula 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... | |
|
![]() |
« Önceki Konu
|
Sonraki Konu »
| Seçenekler | |
| Stil | |
| |
| ||||
| 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 .






orgula buttonunun altına yazacağımız kod.
Normal

