Forum
ş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ı ?
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,
teşekkürler, yeniyim daha .