none
date kaydetme sorunu RRS feed

  • Soru

  • Merhaba

    Veritabanındaki tablom:

    Veritabanına bağlantı için kullandığım kodlar:

    Substringlere göre çıktılar kodların yanlarında.

                    String tarih = dpRandevuTarihi.SelectedDate.Value.ToString().Substring(0,10);//07.02.2014 
                    String saat = cmbRandevuSaati.SelectedValue.ToString().Substring(cmbRandevuSaati.SelectedValue.ToString().Length-5);//14:00
                    String doktor = cmbDoktorAdi.SelectedValue.ToString();
                    String hasta = txtHastaAdi.Text;
                    String islem = txtIslem.Text;

                    SqlConnection baglan = new SqlConnection("Data Source=MEHMET-PC\\SQLEXPRESS;Initial Catalog=RandevuDB;Integrated Security=True");
                    baglan.Open();

                    SqlCommand komut = new SqlCommand("INSERT into Randevu (randevutarihi,randevusaati,dradi,hastaadi,islem) values(" + tarih + "," + saat + "," + doktor + "," + hasta + "," + islem + ")", baglan);

                    SqlDataAdapter adaptor = new SqlDataAdapter(komut);
                    komut.ExecuteNonQuery();

                    baglan.Close();

    Kod Incorrect syntax near .2014 hatası veriyor.Görünen o ki sorun tarih kaydetmede.Sql Serverda YY-MM-DD formatına göre oluşturuyor tarih girince.
    Tarihi String olarak tuttuğumda Datetimepicker ile kullanıcı tarihe göre bazı sorgulamalar yapıyor orada sorun çıkıyor.
    Benim hem o tarihi veritabanından çekip gösterirken DDMMYY şeklinde göstermem gerek hem de yukarıdaki koddaki ekleme sorununu çözmem gerek.Nasıl yapabilirim?

    7 Şubat 2014 Cuma 17:49

Yanıtlar

  • 1) ASLA ve ASLA boyle SQL yazma. Parametre kullan.

    2) Parametre kullaninca anlamsiz ToString() ya da xxxString() islemlerine de gerek kalmaz. String'e cevirmek her zaman tehlikeli (belli formatlar disinda - ODBC canonical format gibi)

    DateTime tarih = dpRandevuTarihi.SelectedDate.Value;//07.02.2014 
    string saat = cmbRandevuSaati.SelectedValue.ToString().Substring(cmbRandevuSaati.SelectedValue.ToString().Length-5);//14:00
    string doktor = cmbDoktorAdi.SelectedValue.ToString();
    string hasta = txtHastaAdi.Text;
    string islem = txtIslem.Text;
    
    using(SqlConnection baglan = new SqlConnection("Data Source=MEHMET-PC\\SQLEXPRESS;Initial Catalog=RandevuDB;Integrated Security=True"))
    {
    
    	SqlCommand komut = new SqlCommand("INSERT into Randevu (randevutarihi,randevusaati,dradi,hastaadi,islem) values(@tarih,@saat,@doktor,@hasta,@islem)", baglan);
    	komut.Parameters.AddWithValue("@tarih",tarih);
    	komut.Parameters.AddWithValue("@saat",saat);
    	komut.Parameters.AddWithValue("@doktor",doktor);
    	komut.Parameters.AddWithValue("@hasta",hasta);
    	komut.Parameters.AddWithValue("@islem",islem);
      
    	baglan.Open();
    	komut.ExecuteNonQuery();
    	baglan.Close();
    }
    

    • Yanıt Olarak İşaretleyen osunwa 7 Şubat 2014 Cuma 23:04
    7 Şubat 2014 Cuma 20:49

Tüm Yanıtlar

  • Tarihi substring ile bölmüş bir şeyler yapmışsın ama anlamadım. Tarih kaydetmek istiyorsan şu şekilde almalısın ;

    string tarih = dpRandevuTarihi.SelectedDate.ToShortDateString();



    İyi Çalışmalar. Cihangir SUR [cihangirsur@hotmail.com]

    7 Şubat 2014 Cuma 20:13
  • string tarih = dpRandevuTarihi.SelectedDate.ToShortDateString();

    kodu bende uyarı veriyor.Sorun şu SelectDate ToShortDateString metodunu tanımıyor.

    Şu hatayı veriyor:

    'System.Nullable<System.DateTime>' does not contain a definition for 'ToShortDateString' and no extension method 'ToShortDateString' accepting a first argument of type 'System.Nullable<System.DateTime>' could be found (are you missing a using directive or an assembly reference?)

    Dedim belki başka bir şekilde ToShortDateStringi kullanabilirim.Araştırınca şu şekilde bir kullanım buldum:

    DateTime tarih2 = DateTime.Parse(dpRandevuTarihi.SelectedDate.GetValueOrDefault().ToShortDateString());

    Bu satırın da çıktısı sadece tarih değil saat de veriyor. 07.02.2014 00:00:00 şeklinde.

    Yani şuan için çözümü bulamadım

    7 Şubat 2014 Cuma 20:45
  • 1) ASLA ve ASLA boyle SQL yazma. Parametre kullan.

    2) Parametre kullaninca anlamsiz ToString() ya da xxxString() islemlerine de gerek kalmaz. String'e cevirmek her zaman tehlikeli (belli formatlar disinda - ODBC canonical format gibi)

    DateTime tarih = dpRandevuTarihi.SelectedDate.Value;//07.02.2014 
    string saat = cmbRandevuSaati.SelectedValue.ToString().Substring(cmbRandevuSaati.SelectedValue.ToString().Length-5);//14:00
    string doktor = cmbDoktorAdi.SelectedValue.ToString();
    string hasta = txtHastaAdi.Text;
    string islem = txtIslem.Text;
    
    using(SqlConnection baglan = new SqlConnection("Data Source=MEHMET-PC\\SQLEXPRESS;Initial Catalog=RandevuDB;Integrated Security=True"))
    {
    
    	SqlCommand komut = new SqlCommand("INSERT into Randevu (randevutarihi,randevusaati,dradi,hastaadi,islem) values(@tarih,@saat,@doktor,@hasta,@islem)", baglan);
    	komut.Parameters.AddWithValue("@tarih",tarih);
    	komut.Parameters.AddWithValue("@saat",saat);
    	komut.Parameters.AddWithValue("@doktor",doktor);
    	komut.Parameters.AddWithValue("@hasta",hasta);
    	komut.Parameters.AddWithValue("@islem",islem);
      
    	baglan.Open();
    	komut.ExecuteNonQuery();
    	baglan.Close();
    }
    

    • Yanıt Olarak İşaretleyen osunwa 7 Şubat 2014 Cuma 23:04
    7 Şubat 2014 Cuma 20:49
  • Yazdığınız şekilde yaptım bağlantı işlemlerini.Şuanda tek sorun tarihi kaydederken

    conversion failed when converting date and/or time from character string. hatası alıyorum.Onu çözmeye çalışıyorum.

    7 Şubat 2014 Cuma 21:27
  • herkese teşekkürler.Kaydetme ile ilgili hiçbir sorunum kalmadı.

    Çetin Bey sizin tarih i DateTime a çevirdiğinizi farketmemişim.Datetime a çevirince kayıt işlemi sorunsuz tamamlandı.

    7 Şubat 2014 Cuma 22:35