sqlparameter dizi
-
19 Haziran 2012 Salı 13:16
if (textBox4.Text == null) textBox4.Text = System.DateTime.Today.ToShortDateString(); SqlCommand komut = new SqlCommand(); bag.Open(); komut.Connection = bag; komut.CommandText = "calisanekle"; komut.CommandType = CommandType.StoredProcedure; SqlParameter[] paramdizi = new SqlParameter[10] { new SqlParameter("@isim", SqlDbType.NVarChar), new SqlParameter("@soyisim",SqlDbType.NVarChar), new SqlParameter("@unvani",SqlDbType.NVarChar), new SqlParameter("@tarih",SqlDbType.Date), new SqlParameter("@adres", SqlDbType.Text), new SqlParameter("@telefon",SqlDbType.Int), new SqlParameter("@telefon2", SqlDbType.Int), new SqlParameter("@calistigiyer", SqlDbType.Text), new SqlParameter("@maasi", SqlDbType.Int), new SqlParameter("@resim", SqlDbType.Text), }; paramdizi[0].Value = textBox1.Text; paramdizi[1].Value = textBox2.Text; paramdizi[2].Value = textBox3.Text; paramdizi[3].Value = textBox4.Text; paramdizi[4].Value = textBox5.Text; paramdizi[5].Value = textBox6.Text; paramdizi[6].Value = textBox7.Text; paramdizi[7].Value = textBox8.Text; paramdizi[8].Value = textBox9.Text; paramdizi[9].Value = Isim; komut.Parameters.AddRange(paramdizi); komut.ExecuteNonQuery(); bag.Close();bu kod dizimi çalıştırdığımda hep datede hata veriyo bunu nasıl engellerim
Tüm Yanıtlar
-
19 Haziran 2012 Salı 13:25
Tarihi Date tipinde vermişsin ama string gönderiyorsun, tarihi convert etmen gerekiyor.
Convert.ToDateTime(textBox4.Text);
-
19 Haziran 2012 Salı 13:39
Merhaba tell10glu;
Ek olarak DateTime.Today.ToShortDateString() 'in çıktısı 19.06.2012 dir.
SqlDbType.Date ise senden BU FORMATTA ister tarihi 2012-06-19
Jesus Promised The End Of All Wicked People, ODIN Promised The End Of All Ice Giants. I Don't See Many Ice Giants Around... exe[nokta]cute[at]live[nokta]com
-
19 Haziran 2012 Salı 14:40hangi formata çevirmem lazım peki ?
-
19 Haziran 2012 Salı 14:54Yanıtlayıcı
SqlCommand komut = new SqlCommand(); bag.Open(); komut.Connection = bag; komut.CommandText = "calisanekle"; komut.CommandType = CommandType.StoredProcedure; komut.Parameters.AddWithValue("@isim", textBox1.Text); komut.Parameters.AddWithValue("@soyisim",textBox2.Text); komut.Parameters.AddWithValue("@unvani",textBox3.Text); komut.Parameters.AddWithValue("@tarih",DateTime.Today); komut.Parameters.AddWithValue("@adres", textBox5.Text); komut.Parameters.AddWithValue("@telefon",textBox6.Text); komut.Parameters.AddWithValue("@telefon2", textBox7.Text); komut.Parameters.AddWithValue("@calistigiyer", textBox8.Text); komut.Parameters.AddWithValue("@maasi", textBox9.Text); komut.Parameters.AddWithValue("@resim", Isim); komut.ExecuteNonQuery(); bag.Close();Telefonlar icin int demissin ama sacma geldi, telefonlar karakter veri. Yine de gercekten int ise:
komut.Parameters.AddWithValue("@telefon",Int32.Parse(textBox6.Text)); komut.Parameters.AddWithValue("@telefon2", Int32.Parse(textBox7.Text));
-
19 Haziran 2012 Salı 15:01Yanıtlayıcı
DateTime.Today.ToShortDateString() 'in çıktısı 19.06.2012 dir
Bu regional settings'e bagli birsey. Oyledir denemez. Mesela bende:
6/19/2012
SqlDbType.Date ise ozel bir formatta istemez. SQL server bircok stringden tarihe cevirme kapasitesine sahip ama dateformatlara bagimli bir islem (mesela 1/2/2012 tarihi 1 Subat 2012 de olabilir, 2 Ocak 2012 de). ODBC canonical formatta verilen string daima dogru cevirilir:
yyyy/MM/dd hh:mm:ss
Ote yandan, string hali ile is yapmak tehlikeli, yerden goge kadar haklisin. Zaten eline tarih varsa tarih ver ne diye oradan oraya cevirip de isi tehlikeye atiyorsun di mi:)
-
19 Haziran 2012 Salı 15:12haklısınız hocam değiştiriym dediğiniz gibi ancak şu datetime olarak nasıl bişey yapabilirim hala çözemedim
-
19 Haziran 2012 Salı 15:33Yanıtlayıcı
Verdigim kodda dogrudan DateTime kullaniyor. Elinde string halinde tarih var ise:
string strTarih = "19 haziran 2012"; DateTime trh; DateTime? tarih = ( DateTime.TryParse(strTarih, new CultureInfo("tr-TR"), DateTimeStyles.None, out trh ) ) ? trh : (DateTime?)null;
- Düzenleyen CetinBasozEditor 19 Haziran 2012 Salı 15:33
- Yanıt Olarak İşaretleyen tell10glu 19 Haziran 2012 Salı 15:50
-
19 Haziran 2012 Salı 15:39
CetinBasoz Çok Haklısnız ..Regional Settings den bahsetmemek / unutmak pek hoş olmadı=(
Date - DateTime da sürekli sıkıntı yaşadığım için Veritabanında Tarih Alanını nvarchar (20) gibi bir değer atayıp.. C# dan
string shrtDateTimeString = DateTime.Now.ToShortDateString();
gibi bir kullanım alışkanlığı edindim ben. Form tarafında ise dateTimePicker in Format Kısmını Short Olarak Kullanınca her şey mis.. oluyor =)
şöyleki Properties ekranından ayarlanabileği gibi code yardımı ile de yapabiliriz
dateTimePicker1.Format = DateTimePickerFormat.Short;
Bunun Hakkında ne dersiniz.. Sağlıklı Birşey mi Yoksa gereksiz mi?
Jesus Promised The End Of All Wicked People, ODIN Promised The End Of All Ice Giants. I Don't See Many Ice Giants Around... exe[nokta]cute[at]live[nokta]com
-
19 Haziran 2012 Salı 17:10Yanıtlayıcı
Bence tarih/tarihsaat veri tabaninda tarih/tarihsaat olmali (ve NULL kabul etmeli - "NULL is evil" ("NULL seytandir") derler ve haklilar ancak bu kullanilmasinin kacinilmaz oldugu nadir yerlerden birisi olabilir).
Date ve DateTime'da genel olarak sorun yasaniyor, yalniz degilsin:) DateTime icin bos deger kabul edilmesine izin vermeyen 2 integer ile tarih saklamayi akil eden zati ben de aniyorum her firsatta. O akil etmis ama daha kotusu uygulamaya girerek gunumuze kadar gelmis, hala da o kullaniliyor (oysa 64 bite cok daha fazlasi sigardi).
String olarak saklayan (daha dogrusu gorsel olarak string) formatlar da var ama daha uzun ve detayli format. ornegin XML:
2012-06-19T10:00:00.000Z
String olarak saklaninca, tarih aritmetigi yapabilmek icin bu sefer gene cevirmek gerekiyor.
Guncelleme:
Az kalsin soylemeyi unutuyordum. DateTime'in ToString serisine (Short, Long vs) cok guvenme ve sadece sonucu kesin olarak belirli formatlari kullan. Benim basima geldi, invariant denen formatlardan birisini hakikaten invariant zannediyordum degilmis. SQL server'da ?? gibi degerler gorunce uyandim. Megerse ornegin Hintli birisi Hindu ayarlariyla girince 10:00 AM gibi bir deger yerine ?? oluyor (tam detayini hatirlamiyorum, duzelttigim koda gidip bakmam lazim ama hatirladigim string cevirim formatlarinda dikkatli olmak gerektigi:)
- Düzenleyen CetinBasozEditor 19 Haziran 2012 Salı 17:16