Avatar billede cypherdenmark Nybegynder
07. marts 2005 - 19:42 Der er 9 kommentarer og
1 løsning

Hvordan indsættes data i MS Sql

Hej Alle,

Jeg har f.eks nogle textboks som hedder id="txtFornavn" og id="txtEfternavn"

I min database har jeg en en table som hedder bruger som indeholder fornavn, efternavn.

Hvordan indsætter jeg data ind i den vha. ADO.NET strukturen....Jeg koder i C#(jeg er lidt newbie...så gerne links/eksempler/forklaring)

Håber i kan hjlælpe
Avatar billede arne_v Ekspert
07. marts 2005 - 20:10 #1
Måske noget a la:

SqlConnection con = new SqlConnection("server=ARNEPC2;Integrated Security=SSPI;database=Test");
con.Open();
SqlCommand ins = new SqlCommand("INSERT INTO tabel VALUES('" + txtFornavn.Text + "','" + txtEfternavn.Text + "')", con);
ins.ExecuteNonQuery();
Avatar billede cypherdenmark Nybegynder
07. marts 2005 - 20:18 #2
hmmm, men jeg har set nogle steder at man f.eks bruger SqlCommand på en anden måde....

altså
SqlCommand cmdInsert = new SqlCommand( sqlInsert, conn );   
cmdInsert.Parameters.Add( "@fornavn", fornavn.Text );
.....
cmdInsert.ExecuteNonQuery();

Men hvorfor angiver man @ foran navnet ? og i sqlInsert statement under Values angiver man ikke værdier som du f.eks lige har vist, hvordan kan det være....
Avatar billede arne_v Ekspert
07. marts 2005 - 20:24 #3
Det kan man også.

Det er faktisk anbefalelsesværdigt.

Men eksemplet bliver ikke simplere af det:

SqlConnection con = new SqlConnection("server=ARNEPC2;Integrated Security=SSPI;database=Test");
con.Open();
SqlCommand ins = new SqlCommand("INSERT INTO tabel VALUES(@fornavn,@efternavn)", con);
ins.Parameters.Add("@fornavn", SqlDbType.VarChar)
ins.Parameters.Add("@efternavn", SqlDbType.VarChar)
ins.Parameters("@fornavn").Value = txtFornavn.text;
ins.Parameters("@efternavn").Value = txtEfternavn.Text;
ins.ExecuteNonQuery();
Avatar billede cypherdenmark Nybegynder
07. marts 2005 - 20:25 #4
Okay, men hvorfor bruger man @ foran?
Avatar billede arne_v Ekspert
07. marts 2005 - 20:28 #5
Det gør man traditionelt til parametre til SQLServer.
Avatar billede cypherdenmark Nybegynder
07. marts 2005 - 20:32 #6
okay det vil sige at min sqlInsert statement (kl. 20:18:54) skal se sådan ud...

string sqlInsert = "INSERT INTO bruger "+"( fornavn, efternavn ) "+"VALUES "+"( @fornavn, @efternavn, )";

hvor man f.eks men @fornavn senere angiver værdier altså:

ins.Parameters.Add("@fornavn", SqlDbType.VarChar)
ins.Parameters("@fornavn").Value = txtFornavn.text;

Er det korrekt forstået?
Avatar billede arne_v Ekspert
07. marts 2005 - 20:38 #7
Ja

Eller - det er ihvertfald en af måderne.
Avatar billede arne_v Ekspert
07. marts 2005 - 20:39 #8
Ved at bruge parametre undgår du risiko for SQL injection, problemer med O'Toole etc..

Og en af finsserne er at:

ins.Parameters("@noget").Value = noget;
ins.ExecuteNonQuery();

kan være inden i en løkke mens resten er udenfor.
Avatar billede arne_v Ekspert
07. marts 2005 - 20:39 #9
og et svar
Avatar billede cypherdenmark Nybegynder
07. marts 2005 - 20:44 #10
Super fint svar...det vil jeg arbejde videre med.....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester