Forum

SQL de tablodaki ka...
 
Bildirimler
Hepsini Temizle

SQL de tablodaki kadar veri girme zorunluluğu ( insert komutuyla )

3 Yazılar
2 Üyeler
0 Likes
394 Görüntüleme
(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

 

şimdi ben bu tabloyu oluşturdum ve deneme amaçlı forumdaki 3 textbox değerini buraya atıycam. 

SqlCommand cmd = new SqlCommand("Insert Into dbo.PrnInf(PrnName, PrnSurName, PrnEgn ) Values ('"+txtPrnName.Text+", "+txtPrnSurName.Text+","+txtPrnEgn.Text+"')", conn);
            cmd.ExecuteNonQuery();

 

lakin cmd.execute'ta hata veriyor. inset komutundan gelen veri yuvası , valuesden gelen verilerden daha fazla. .çünkü tablodaki ilk 4 satırın boş olmayacağını belirttim. lakin PrnID yi otomatik olarak ataması gerek. Primary key atadım ve identyspecification olayını tanımladım. 

 

ama dediğim gibi hata veriyor. 

 

yani tek seferde DB deki tabloların hepsini doldurmam şart mı ? 

 
Gönderildi : 22/06/2011 15:50

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Merhaba,

 Sizin yapmış olduğunuz kötü bir pratik uygulamasıdır.Yani,burada her bir string değerini sınırlamaya ihtiyacın olacaktır.

Ve de tek tırnak içinde olacak değerler;

("Insert Into dbo.PrnInf(PrnName, PrnSurName, PrnEgn )     Values
('"+txtPrnName.Text+"', '"+txtPrnSurName.Text+"','"+txtPrnEgn.Text+"')", conn);

buna benzer şekilde olmalıdır.Vede böyle bir durumda sistemin SQL injection 'a açık olacaktır.Buda bir güvenlik sorunu doğuracaktır.

2-iyi bir yönte olarak benim tavsiyem sorgularınızı parametrize ederek yazınız.

SqlCommand cmd = new SqlCommand
    ("Insert Into dbo.PrnInf(PrnName, PrnSurName, PrnEgn )     Values
    (@PrnName, @PrnSurName, @PrnEgn)", conn);
cmd.Parameters.AddWithValue("@PrnName", txtPrnName.Text);
cmd.Parameters.AddWithValue("@PrnSurName", txtPrnSurName.Text);
cmd.Parameters.AddWithValue("@PrnEgn", txtPrnEgn.Text);
cmd.ExecuteNonQuery();

bunun gibi.

 

Saygılar,

 
Gönderildi : 22/06/2011 17:27

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

teşekkürler, yeniyim daha .

 
Gönderildi : 22/06/2011 19:00

Paylaş: