Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Jan 2008

Objektorientering med ADO

Jag har kod för att använda Lagrade Procedurer i C#. Bl.a. detta.

Nuförtiden har man ju ORM som EF t.ex. Har inte jobbat med detta.

Om man nu skapar objekt t.ex. person och vill spara datan till databasen, vilket vore det mest objektorienterade sättet?

Skapa en klass för själva kopplingen eller skapa en metod för klassen student som sparar till databasen? Eller något annat sätt?

string connectionString = "Server=xxxxxxxxxxxSQLEXPRESS;DataBase=Chinook;Trusted_Connection=true"; string firstName = textBox1.Text; string lastName = textBox2.Text; using (SqlConnection connection = new SqlConnection(connectionString)) //Istället för finally { try { connection.Open(); // 1. Skapa ett SqlCommand för att identifiera din lagrade procedur SqlCommand cmd = new SqlCommand("getCity3", connection); // 2. Tala om för SqlCommand att det är en lagrad procedur vi ska köra cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@firstname", firstName)); cmd.Parameters.Add(new SqlParameter("@lastname", lastName)); //Kör frågan och spara till SqlDataReader SqlDataReader rdr = cmd.ExecuteReader(); //Gå igenom ditt resultat while (rdr.Read()) { richTextBox1.ForeColor = Color.Blue; richTextBox1.AppendText("Förnamn: "); richTextBox1.AppendText(rdr["FirstName"].ToString()); richTextBox1.AppendText("\n"); richTextBox1.AppendText("Efternamn: "); richTextBox1.AppendText(rdr["LastName"].ToString()); richTextBox1.AppendText("\n"); richTextBox1.AppendText("Stad: "); richTextBox1.AppendText(rdr["City"].ToString()); richTextBox1.AppendText("\n"); richTextBox1.AppendText("\n"); } } catch (Exception ex) { MessageBox.Show("Något fel i databasen" + ex.ToString()); }

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Acer Predator XB271HU || Windows 10

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Mar 2004

Här är något du kan titta på, där själva "personklassen" är tables i databasen. Vet inte om det är exakt det du pratar om men iaf ett exempel på hur det kan se ut med ORM och utan ORM.

https://gist.github.com/duraz0rz/4592183

Om du absolut inte vill använda ORM så hade jag haft en personklass och en databasklass. Databasklassen har du metoder som passar det du vill göra för att sedan använda personklassen att skapa personobjekt och lägga in i databasen med hjälp av dina metoder i din databasklass.

"Happiness is only real when shared"

Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Jan 2008
Skrivet av sebbeharry:

Här är något du kan titta på, där själva "personklassen" är tables i databasen. Vet inte om det är exakt det du pratar om men iaf ett exempel på hur det kan se ut med ORM och utan ORM.

https://gist.github.com/duraz0rz/4592183

Om du absolut inte vill använda ORM så hade jag haft en personklass och en databasklass. Databasklassen har du metoder som passar det du vill göra för att sedan använda personklassen att skapa personobjekt och lägga in i databasen med hjälp av dina metoder i din databasklass.

Tack! Skulle du kunna ge ett kort exempel på databasklassen? Är lite osäker på hur man skulle lägga in objekten i databasen utan ORM.

Antar att man får plocka ut varje värde ur personobjektet och sedan spara det i en persontabell?

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Acer Predator XB271HU || Windows 10

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Mar 2004
Skrivet av Larsp777:

Tack! Skulle du kunna ge ett kort exempel på databasklassen? Är lite osäker på hur man skulle lägga in objekten i databasen utan ORM.

Antar att man får plocka ut varje värde ur personobjektet och sedan spara det i en persontabell?

Precis, du lägger in objektet som parameter t ex addToDB(person newPerson) { // använd din mysql-connector och dess .add för att lägga till t ex namnpaconnetor.add(newPerson.name); osv osv osv osv

Förstår du hur jag menar?

"Happiness is only real when shared"

Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Jan 2008
Skrivet av sebbeharry:

Precis, du lägger in objektet som parameter t ex addToDB(person newPerson) { // använd din mysql-connector och dess .add för att lägga till t ex namnpaconnetor.add(newPerson.name); osv osv osv osv

Förstår du hur jag menar?

Ja, jag tror det 😀

Tack igen!

Skickades från m.sweclockers.com

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Acer Predator XB271HU || Windows 10

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Mar 2004
Skrivet av Larsp777:

Ja, jag tror det 😀

Tack igen!

Skickades från m.sweclockers.com

Haha bra! Som sagt, tips för framtiden är att titta på något som heter EntityFramework, riktigt smidigt när du väl satt dig in i det och det finns många bra guider på det på nätet.

"Happiness is only real when shared"