Valla Cemal herseyi yazmis ben sadece onun dediklerini tekrarliyorum.
Kesinlikle o sekilde SQL kodu kullanma. Cemal'in dedigi gibi SQL injection icin ideal kod. Hackerlara gelin benim datami tepe tepe kullanin demek. Parametre kullan. Hem parametre kullanirsan DateTime, int vs tip/format cevirimi ile ugrasmayacaksin.
SqlCommand:
C#
VeriYaz.CommandText = "INSERT INTO stok (stokkodu,tarihi,islem) " & _
" VALUES (@stokkodu,@tarihi,'C')"
VeriYaz.Parameters.AddWithValue("@stokkodu",ftak1)
VeriYaz.Parameters.AddWithValue("@tarihi",ftak2)
OleDbCommand:
C#
VeriYaz.CommandText = "INSERT INTO stok (stokkodu,tarihi,islem) " & _
" VALUES (?,?,'C')"
VeriYaz.Parameters.AddWithValue("@stokkodu",ftak1)
VeriYaz.Parameters.AddWithValue("@tarihi",ftak2)
SqlCommand ile OleDbCommand arasindaki fark birisinde ? ile parametre yer tutucularini belirliyorsun ve mutlaka sirasiyla (OleDbCommand'de) Parameters koleksiyonuna eklemen gerekli. Parametre adinin onemi yok (yani ilk eklenen adi ne olursa olsun stokkodu icin olan parametre, ikincisi tarih). SqlCommand'de isimler kullaniliyor.
ftak2 burada anladigim kadariyla string (kodu gene kirpip vermissin). Tahminime gore:
ftak2 = txtTarih.Text
gibi birsey. Oyle ise onu DateTime'a cevir:
C#
DateTime? ftak2 = null;
DateTime _Tarih
if ( DateTime.TryParse(txtTarih.Text,new CultureInfo("tr-TR"),DateTimeStyles.None,out _Tarih) )
{
ftak2 = _Tarih;
}
Bu sekilde "31 Ocak 2011", "31/1/2011" vs yazilan dogru cevrilir. Tabii textbox yerine bir calendar kontrolden almakta fayda var.