SQL'de Tarih Kullanmak

Veritabanı programcılığı SQL'de Tarih Kullanmak Programlama hakkında bilgi paylaş; Öncelikle kullanıcı arayüzünden veritabanına gönderilmesini inceleyelim. Access , MS SQL Server yada Oracle databasezlerinde tablomuzu oluş...
Cevapla
WebMasTer SiTeSi
 
Seçenekler
  #1  
Arama 24-02-2008, 05:13
Banlı
Üyelik Tarihi: 18/09/07
Mesajlar: 1.551
 
     WS-Ticareti: (1)
Blog Yazıları: 1
Teşekkürleri: 0
20 Msg. 27 Tşkr.
Rep Gücü: 0 B737 rep gücü epey yüksek

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 4orgula 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 .
Alıntı ile Cevapla
Cevapla
Arama Etiketleri: , ,



Seçenekler


Benzer Konular
Konu Konu Açanlar Forum Cevaplar Güncel Mesajlar
Domaini bloggerda kullanmak SveS Soru-Cevap 3 15-09-2008 04:02
Delphi'de Interface Hazırlamak ve Kullanmak miguel Delphi 0 04-02-2008 04:37
Frame Kullanmak egitimbilgisi Yeni Başlayanlara WebmasterSitesi 2 02-01-2008 06:21
Interbase i MultiUser Kullanmak Celebrian Delphi 0 24-12-2007 02:02
frame kullanmak W-S Html 0 02-11-2007 01:29


Webmaster web tasarım online reviews ~ Kadınlar blogu ~ Apple iPhone, iPod Touch ( iTouch ) Forum ~ iPhone