Nybörjare i c#, skriv in data till sql

Permalänk
Medlem

Nybörjare i c#, skriv in data till sql

Hej!

Har precis börjat koda och jag tror tyvärr jag har tagit vatten över huvudet denna gång och därför vänder jag mig till er med lite mer erfarenhet.

Programmet jag försöker skriva ser ut såhär:

Och här är koden:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System; using System.Data.SqlClient; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } SqlConnection con = new SqlConnection(); private void button1_Click(object sender, EventArgs e) { string firstname = textBox1.Text; string lastname = textBox2.Text; string adress = textBox3.Text; string stad = textBox4.Text; string username = textBox5.Text; con.ConnectionString = "Server=.\\sqlexpress;database=hr;trusted_connection=true;"; con.Open(); SqlCommand myCommand = new SqlCommand("INSERT INTO users VALUES ('username', 'lastname', 'firstname', 'adress', 'city')", con); myCommand.ExecuteNonQuery(); label2.Text = "Connected and data imported"; con.Close(); } } }

Vad jag försöker göra:
När man trycker på knappen "Connect" så skall datan jag skrivit in i de 5 olika textrutorna skrivas in i min databas som har 5 kolumner med samma namn som textrutorna. Det jag inte förstår är hur jag skall använda mina variablar.
Det fungerar att hårdkoda och skriva tillexempel:

SqlCommand myCommand = new SqlCommand("INSERT INTO users VALUES ('joa', 'Andersson', 'Johan', 'Sweclockers', 'Stockholm')", con);

Men som sagt, jag förstår inte hur jag skall få in mina "strings" i koden. Någon som kan hjälpa mig?

Tack på förhand!

Visa signatur

[Intel Core i5 2500k] [Asus P8Z68-V Pro] [2x ATI 6950 1gb] [Fractal Design XL] [Corsair HX 750W] [Corsair 16Gb 1600MHz] [OCZ SSD Vertex3 120GB]

Permalänk
Skrivet av Stylaren:

Hej!

Har precis börjat koda och jag tror tyvärr jag har tagit vatten över huvudet denna gång och därför vänder jag mig till er med lite mer erfarenhet.

Programmet jag försöker skriva ser ut såhär:
http://i.imgur.com/eXRH7.jpg

Och här är koden:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System; using System.Data.SqlClient; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } SqlConnection con = new SqlConnection(); private void button1_Click(object sender, EventArgs e) { string firstname = textBox1.Text; string lastname = textBox2.Text; string adress = textBox3.Text; string stad = textBox4.Text; string username = textBox5.Text; con.ConnectionString = "Server=.\\sqlexpress;database=hr;trusted_connection=true;"; con.Open(); SqlCommand myCommand = new SqlCommand("INSERT INTO users VALUES ('username', 'lastname', 'firstname', 'adress', 'city')", con); myCommand.ExecuteNonQuery(); label2.Text = "Connected and data imported"; con.Close(); } } }

Vad jag försöker göra:
När man trycker på knappen "Connect" så skall datan jag skrivit in i de 5 olika textrutorna skrivas in i min databas som har 5 kolumner med samma namn som textrutorna. Det jag inte förstår är hur jag skall använda mina variablar.
Det fungerar att hårdkoda och skriva tillexempel:

SqlCommand myCommand = new SqlCommand("INSERT INTO users VALUES ('joa', 'Andersson', 'Johan', 'Sweclockers', 'Stockholm')", con);

Men som sagt, jag förstår inte hur jag skall få in mina "strings" i koden. Någon som kan hjälpa mig?

Tack på förhand!

Nu har jag aldrig jobbat med databaser i c#, men är det inte bara att byta ut dina värden i sql-satsen till variablerna?

Visa signatur
Permalänk

Nu är inte heller jag någon expert på C#, men lite vanlig konkatenering borde väl funka?

SqlCommand myCommand = new SqlCommand("INSERT INTO users VALUES ('"+username+"', '"+lastname+"', '"+firstname+"', '"+adress+"', '"+city+"')", con); myCommand.ExecuteNonQuery();

Permalänk
Medlem

VIKTIGT: Att bara stoppa in värden rakt av i en sträng med själva frågan är ju att be om problem, se http://bobby-tables.com/

Om du ska göra rätt, vilket du förstås ska, så vill du använda parametrar i frågan. Finns exempel för .NET/C# på bobby-tables-siten men förstås även om du kikar i MSDN-dokumentationen.

Visa signatur

AMD Ryzen9 5900X || Gigabyte X570 Ultra || RTX 3090 FE || Gskill Trident Z 3600 64GB || Samsung 950 Pro 512GB || Samsung 960 Pro 1024GB || XB270HU 1440p IPS G-Sync

Permalänk
Skrivet av evil penguin:

VIKTIGT: Att bara stoppa in värden rakt av i en sträng med själva frågan är ju att be om problem, se http://bobby-tables.com/

Om du ska göra rätt, vilket du förstås ska, så vill du använda parametrar i frågan. Finns exempel för .NET/C# på bobby-tables-siten men förstås även om du kikar i MSDN-dokumentationen.

Sjävklart ska man akta sig för sql-injektioner, men man måste ju ta ett steg i taget Sen så måste jag säga att sidan du länkade till var väldigt rörig, men orkar inte googla upp någon egen så.

Permalänk
Medlem

"Rätt" sätt att använda SqlCommand är att göra såhär

SqlCommand myCommand = new SqlCommand("INSERT INTO users VALUES (@username, @lastname, @firstname, @adress, @city)", con); myCommand.Parameters.Add("@username", username); myCommand.Parameters.Add("@lastname", lastname); myCommand.Parameters.Add("@firstname", firstname); myCommand.Parameters.Add("@adress", adress); myCommand.Parameters.Add("@city", city); myCommand.ExecuteNonQuery();

Vilket bekvämligt nog också löser alla problem med sql-injektion som det tutats om tidigare i tråden automatiskt.