Şimdi Ara

ASP.NET veritabanı..

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
5
Cevap
0
Favori
1.376
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaslar MySql ile olusturdugum veritabanındaki bir tabloya ASP.net projemde veri girişi yapıyorum ama veri girişi sürekli ilk kaydın üzerine yapılmaya çalısılıyor..örneğin birincil anahtar değeri 1 olan veri giriyorum bunu tabloya yazıyor,daha sonra baska kayıt eklemek isteyince üzerine yazmaya çalısıyor ve "duplicate varible" hatası ile karsı karsıya kalıyorum

    ayrıca veritabanını olustururken birincil anahtar değerini auto increment olarak ayarladım,ama kendisi bunu yapmıyor...ne yapailirim acaba??

    protected void Page_Load(object sender, EventArgs e)
    {


    String MyConnString = "Server=127.0.0.1;Database=test;Uid=root;Pwd=12345";
    MySqlConnection conn = new MySqlConnection(MyConnString);

    MySqlCommand komut = new MySqlCommand("insert into deneme3 (no,ad,soyad) values ('1','ad','soy');", conn);

    komut.Parameters.AddWithValue("1"+"ad"+"soy", "test");

    conn.Open();

    komut.ExecuteNonQuery();

    conn.Close();
    }


    tablo 3 coloumdan olusuyo,ilki birincil ve auto increment olarak ayarlandı..







  • Veritabanı sistemlerinde auto increment ve primary key olan bir kolon a belirgin bir şekilde veri girişi yapamazsın ancak başına bir sql cümleceği daha girerek yapabilirsin. Auto increment ve identity kollonlara ekleme yapacaksan mesela MsSQL den bildiğim

    SET IDENTITY_INSERT ON tablo_adi o tablo için identity kolona veri işleyebilirsin.

    Normalde veritabanlarında default olarak SET IDENTITY_INSERT OFF durumundadır sen bu durumda auto increment özelliği açık olan sütun a yani no sütununa veri eklemeye çalışırsan hata verecektir.

    SET IDENTITY_INSERT ON haline getirmeden no kolonuna ekleme yapmamalısın ad ve soy a parametre alıp onları işleme göndermen doğru kullanım olur.Ayrıca çok kullanılan bir şey değildir bu özellik.Yani bu şekilde yapman doğru olur.


    MySqlCommand komut = new MySqlCommand("insert into deneme3 (ad,soyad) values ('ad','soy');", conn);

    komut.Parameters.AddWithValue("ad"+"soy", "test");

    Bu durumda her yeni veri geldiğinde row numarasına bağlı olarak no kolonuda otomatik artacaktır.



    < Bu mesaj bu kişi tarafından değiştirildi perfect expert -- 28 Temmuz 2009; 9:20:45 >




  • quote:

    Orijinalden alıntı: perfect expert

    Veritabanı sistemlerinde auto increment ve primary key olan bir kolon a belirgin bir şekilde veri girişi yapamazsın ancak başına bir sql cümleceği daha girerek yapabilirsin. Auto increment ve identity kollonlara ekleme yapacaksan mesela MsSQL den bildiğim

    SET IDENTITY_INSERT ON tablo_adi o tablo için identity kolona veri işleyebilirsin.

    Normalde veritabanlarında default olarak SET IDENTITY_INSERT OFF durumundadır sen bu durumda auto increment özelliği açık olan sütun a yani no sütununa veri eklemeye çalışırsan hata verecektir.

    SET IDENTITY_INSERT ON haline getirmeden no kolonuna ekleme yapmamalısın ad ve soy a parametre alıp onları işleme göndermen doğru kullanım olur.Ayrıca çok kullanılan bir şey değildir bu özellik.Yani bu şekilde yapman doğru olur.


    MySqlCommand komut = new MySqlCommand("insert into deneme3 (ad,soyad) values ('ad','soy');", conn);

    komut.Parameters.AddWithValue("ad"+"soy", "test");

    Bu durumda her yeni veri geldiğinde row numarasına bağlı olarak no kolonuda otomatik artacaktır.





    dediğin gibi yapınca parametreler eksik diyo ve yine hata veriyo

    "Column count doesn't match value count at row 1"




  • özür dilerim hata bendeymişdediğiniz gibi oldu,teşekkürler
  • quote:

    Orijinalden alıntı: sancopanco

    özür dilerim hata bendeymişdediğiniz gibi oldu,teşekkürler


    Bir şey değil.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.