none
sqlparameter dizi

    Soru

  •   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
    19 Haziran 2012 Salı 13:16

Yanıtlar

  • 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;


    19 Haziran 2012 Salı 15:33
  • 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


    • Düzenleyen Exe.Cute 19 Haziran 2012 Salı 15:40
    • Yanıt Olarak İşaretleyen tell10glu 19 Haziran 2012 Salı 15:51
    19 Haziran 2012 Salı 15:39

Tüm Yanıtlar

  • Tarihi Date tipinde vermişsin ama string gönderiyorsun, tarihi convert etmen gerekiyor.

    Convert.ToDateTime(textBox4.Text);

    19 Haziran 2012 Salı 13:25
  • 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ı 13:39
  • hangi formata çevirmem lazım peki ?
    19 Haziran 2012 Salı 14:40
  • 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ı 14:54
  •  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:01
  • haklı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:12
  • 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;


    19 Haziran 2012 Salı 15:33
  • 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


    • Düzenleyen Exe.Cute 19 Haziran 2012 Salı 15:40
    • Yanıt Olarak İşaretleyen tell10glu 19 Haziran 2012 Salı 15:51
    19 Haziran 2012 Salı 15:39
  • 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:)

    19 Haziran 2012 Salı 17:10