28-09-2007FEN Databaser/dbAdgang11 Databaseadgang fra C#: ADO.NET (ActiveX Data Objects)

Slides:



Advertisements
Lignende præsentationer
SPBG.  Test driven development  Unit test frameworks  MOSS TDD  Mocking  Design patterns.
Advertisements

Throw a die Read the current value of index Add 1 Return the new value to index IndexIndex Create an empty array to count the number of dice throws Initialize.
Hej.
Velkommen til Softwarekonstruktion
C# introduktion. using System; Namespace MyFirst { class eks1 { public static void Main() { Console.WriteLine("Hej!"); Console.Write("Skriv dit navn her:
1 GUI Programmering i.NET WinForms. Mål “.NET supports two types of form-based apps, WinForms and WebForms. WinForms are the traditional, desktop GUI.
Microsoft Windows.NET Compact Framework Niels Hilmar Madsen Developer & Platform Strategy Group Microsoft Danmark.
07 – Kort om OO Introduktion.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
13 – Database med JDBC. 2 NOEA2009Java-kursus – JDBC JDBC JDBC er et standard bibliotek til at tilgå relational databaser API’et er en standardiseret.
Arkitektur Embedded SQL Tema Persistens
1 JavaServer Faces Copyright © Lund & Bendsen Dynamikken i JSF.
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
06 – Java Packages Packages og ClassPath. 2 NOEA2009Java-kursus – Packages og class path Hvad er Packages? En package er en gruppering af relaterede typer.
Item gennemgang  Item: 01 – Static factory methods  Item: 09 – Override hashCode  Item: 17 – Design & document inheritence  Item: 25 – Lists over arrays.
Programmeringsteknologi: Lektion 1
Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,
View Procedures Trigger og Function Jesper Tørresø DAB1 E07 1. november 2007.
CodeIgniter Database Brugerinput Form Validation 20101JFH.
Regnskab & økonomistyring - Lektion 15 HD 5. semester forår 2010 v/ Jens Godik Højen, April 2010.
Udvikling med Microsoft 2007 Office System Michell Cronberg Microsoft MVP, MCT, MCAD ISV Innovation Day 2006 ServerServer.
Udvikling med Microsoft 2007 Office System Michell Cronberg Microsoft MVP, MCT, MCAD ISV Innovation Day 2006 KlientKlient.
Objekter og klasser Applikationsdesign Code Namespace Value og reference typer Reference type Rasmus D. Lehrmann1.
FEN Databaser/DBAdgang21 DB-adgang - Connectionless Connectionless DataAdapter DataSet.
12 – GUI med Swing. 2 NOEA2009Java-kursus – GUI med Swing Designer view Komponenter Frame Properties Inspector.
Visual Studio Team System Work Item tracking med Microsoft templates.
Technology Briefing. Hvorfor snakker vi drift? Meget fokus fra Microsoft på effektiv drift Dynamic Systems Initiative MS Operations Framework Meget fokus.
Tietgen Skolen Syntaks: while ( betingelse for loop ) statement; Eksempel: int tal = 0; while ( tal/3 != 4 ) { System.Console.WriteLine(tal); tal = tal.
WCF service Hostet på website x. Opret tomt web applikations projekt.
Introduktion til.NET- platformen og version 2.0 Michell Cronberg Microsoft MVP
Masterpages/Otto Knudsen 1 Master Pages Master Pages i ASP.NET 2.0.
Introduktion/Otto Knudsen 1 Overblik WebForms ASP.NET.
Distribution af funktionalitet Webservice med WCF x.
Distribution af funktionalitet Webservice med WCF x.
Web service - elementer SOAP (Simple Object Access Protocol) WSDL (Web Service Description language) UDDI (Universal Description, Discovery and Integration)
Web service - elementer SOAP (Simple Object Access Protocol) WSDL (Web Service Description language) UDDI (Universal Description, Discovery and Integration)
ASP.NET Custom Web Controls Deployment. Agenda – ASP.NET Web User Controls Composite Control Rendered Custom Control Deploy en Web Applikation.
NOEA/IT FEN - Databaser/Sikkerhed 1 Lektion 10 Sikkerhed og integritet Områder Autorisationsmatrix Realisering i SQL.
Abstrakte klasser og interfaces i Java
Object-Orienteret Programmering og Design Kilde: Joe Hummel.
W: E: xTrace – trace på z/OS Dansk Gen brugergruppe 2008 Henrik Meisner Meisner IT.
”Søg og du skal finde” fra idé til applikation af Mads Thomsen og Bent Guldager.
SQL Introduktion Jesper Tørresø DAB1 F08 6. Februar 2008.
Programering af mobile enheder Windows Phone Storage.
Henrik Westergaard Hansen ISV Developer Evangelist Microsoft
Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.
N-lags design/Otto Knudsen 1 N-lags Design Definition Motivation.
14. Web-baserede Apps i.NET. 2 NOEA2009C#-kursus Objectives “Real-world applications are typically multi-tier, distributed designs involving many components.
Session Når man hoster en WCF Service på ASP.NET website, kan man bruge ASP.NET’s Session.
Gruppe sort Morten, Peter, Jesper, Spencer & Støving.
Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.
#MapInfo konference 2006 – For enden af regnbuen… Microsoft.NET og MapXtreme 2005 Aske Butze-Ruhnenstierne Cowi A/S.
ADO.NET 2.0 Captator Tlf: Henrik Lykke Nielsen Softwarearkitekt, Microsoft Regional Director for Denmark Mobil:
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
1 XMLRelationel model og XMLNOEA / FEN 2007 Relationelle databaser og XML Overblik. –For detaljer se PQC: sqlOgXml.ppt og SqlServerOgXml.ppt RDB-struktur.
SQL Jesper Tørresø DAB1 E oktober Punkter for i dag. SQL baggrund. Relationel algebra. Brug af VS2005.
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
Masterpages/Otto Knudsen 1 Navigation på webstedet Kontroller til navigation mellem siderne på webstedet.
10. Datastrukturer. 2 Nordjyllands Erhvervakademi Collections library Datastrukturer i.NET kaldes normalt Collections Findes i namespace System.Collections.
Repetition: Introduktion til OOP med C# og .NET
ADO.NET Databaser SQL Client (SQL server 7 og senere) OleDb (en række incl. jet) ODBC MySql (ekstra driver skal instaleres) Oracle (XML dataset) Samme.
SQL Jesper Tørresø DAB1 E September Punkter for i dag. SQL baggrund. Relationel algebra. SQL koncept –Vises ved brug af VS2008.
8.5 JDBC1 JDBC 8.5 Java Database Connectivity. 8.5 JDBC2 JDBC introduktion, 393 JDBC er ikke en forkortelse for –Java Database Connectivity Sun har defineret.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
Databaseadgang fra C#:
Forelæsning 7.1 – repetition
Oracle Application Express Lektion 1 7. Semester 2008.
Solution Makers A/S – Gruppe 4 Lars Wolter Nils Martinsen Rasmus Seye Tobias Kjeldsen 1.
1A – FORÅR 2017.
Præsentationens transcript:

FEN Databaser/dbAdgang11 Databaseadgang fra C#: ADO.NET (ActiveX Data Objects)

FEN Databaser/dbAdgang12 ADO.NET - Arkitektur Non Microsoft Vi bruger den her

FEN Databaser/dbAdgang13 Database library Databasetilgang tilbydes af namespace System.Data.* Klasserne kendes samlet som ADO.NET –“native support” til SQL Server og Oracle –Supporterer andre DBMS’er via den ældre OleDB-teknologi –Kræver kendskab til SQL og C#-programmering Der bruges forskellige klasser til de forskellige databaser, fx findes der en OleDbCommand, en SqlCommand og en OracleCommand. Alle implementerer IDbCommand. Anvendte namespaces: –generelt: System.Data, System.Data.Common –SQL Server: System.Data.SqlClient –Oracle: System.Data.OracleClient –OleDB: System.Data.OleDb

FEN Databaser/dbAdgang14 ADO.NET Arkitektur

FEN Databaser/dbAdgang15 To måder at tilgå DB på Connected: –Åbn connection –Læse-/Skrivetilgang (select, insert, update og delete) via Command-objekt –Ved læsetilgang (select) returneres et DataReader-objekt –Luk Connection Disconnected: –Fyld et DataSet-objekt (kopi af dele af databasen) vha. en DataAdapter –DataAdapter indpakker SQL-statement(s) –DataSet-objekt indeholder DataTable-objekter –DataTable-objekter indeholder collections af rækker og kolonner Mere herom næste gang

FEN Databaser/dbAdgang16 Overblik - connected databaseadgang Tre skridt: 1.åbn connection til databasen 2.eksekver SQL for at opdatere/læse DB 3.luk connection

FEN Databaser/dbAdgang17 1: Åbn connection Connections åbnes på grundlag af en connection string –Kan findes i Visual Studio: // Create and open a connection. SqlConnection cn = new SqlConnection(); cn.ConnectionString = " Data Source =PCM06073\\SQLEXPRESS;” +”Initial Catalog=vw;Integrated Security=True;"; cn.Open(); ShowConnectionStatus(cn); // or should it be? cn.ConnectionString = “ Server =PCM06073\\SQLEXPRESS;” +”Initial Catalog=vw;Integrated Security=True;"; cn.Open(); Data Source or Server?

FEN Databaser/dbAdgang18 Connection strings Connection strings er produkt-afhængige og som regel ikke særligt veldokumenterede Hvor kan man hente hjælp? – – Til MS SQL Server kan Visiual Studio hjælpe

FEN Databaser/dbAdgang19 2: Hent records Hent records vha. SQL-Select // Create a SQL command object. string strSQL = "SELECT * FROM Car"; SqlCommand myCommand = new SqlCommand(strSQL, cn); #region Data reader code // Obtain a data reader ala ExecuteReader(). SqlDataReader myDataReader; myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); // Loop over the results. while (myDataReader.Read()) { for (int i = 0; i < myDataReader.FieldCount; i++) { Console.Write("{0} = {1} ", myDataReader.GetName(i), myDataReader.GetValue(i).ToString().Trim()); } Console.WriteLine(); }

FEN Databaser/dbAdgang110 3: Luk connection Husk at lukke connection… –Så andre kan få adgang til databasen dbConn.Close();

FEN Databaser/dbAdgang111 Opgave Lav et program, som læser alle ansatte I Company-databasen

FEN Databaser/dbAdgang112 Design 1: SQL i domæneklasserne Indlejret SQL placeres i hver af domæneklasserne. Dette design er hurtigt at implementere, og kan bruges ifm. meget små applikationer og prototyper AnsatProjektDB.zipAnsatProjektDB

FEN Databaser/dbAdgang113 Design 1 (simpleste) Domæneklasser DB SQL Tabeller

FEN Databaser/dbAdgang114 Design 2 DB-lag mellem domæne og Database Den indlejrede SQL placeres i dataklasser. Dataklasserne er placeret i et lag mellem domæneklasserne og databasen Holder udmærket for små systemer (prototyper og mindre end domæneklasser) Små ændringer resulterer stadig i kildekodeændringer. Fordelen frem for design1 er, at man har isoleret SQL- koden i egne klasser. Dataklasserne kan evt. erstattes af stored procedures. AnsatProjektDBEksempel.zip

FEN Databaser/dbAdgang115 Design 2 (næstsimpleste) Domæneklasser DataAccess- klasser DB SQL Tabeller Objekter

FEN Databaser/dbAdgang116 Design 3 Domæneklasser Robust Persistenslag DB SQL Tabeller Objekter

FEN Databaser/dbAdgang117 “Rigtig” n-tier arkitektur

FEN Databaser/dbAdgang118 Eksempel på realisering af domænemodel (design 2) Del af design-klassediagram i et system til registrering af ansatte og projekter AnsatProjektDbEksempel.zip

FEN Databaser/dbAdgang119 AnsatProjekt Ved load fyldes GUI-komponenterne –Først med projektoplysninger: private void Form1_Load(object sender, System.EventArgs e){ ArrayList projekter = c.FindAlleProjekter(); foreach (Projekt p in projekter){ this.lstProjekter.Items.Add(p); if(!this.cmbAfdeling.Items.Contains(p.Afdeling)) this.cmbAfdeling.Items.Add(p.Afdeling); this.cmbAfdeling.SelectedItem = this.cmbAfdeling.Items[0]; }

FEN Databaser/dbAdgang120 AnsatProjekt Ved load fyldes GUI-komponenterne –Derefter med ansatoplysninger: ArrayList ansatte = c.FindAlleAnsatte(); foreach (Ansat a in ansatte) { this.cmbAnsat.Items.Add(a); } this.cmbAnsat.SelectedItem = this. cmbAnsat.Items[0]; }

FEN Databaser/dbAdgang121 AnsatProjekt Lad os følge knappen Tilknyt Medarbejder gennem systemet Findes i controller-klassen – tager Ansat, Projekt og timer som parametre Controlleren kalder ned i Projektklassen, som jo har ansvaret for oprettelsen af en forekomst af ArbejderPaa

FEN Databaser/dbAdgang122 AnsatProjekt Klassen AccessDb –Indkapsler en DbCommand (som skifter SQL- statement alt efter hvem der bruger den) –Styrer den ene connection projektet arbejder med –Hvorfor ikke bare en connection pr metode der skal tilgå db? Connections er en knap ressource Svært at holde styr på: –Hvad hvis en db-metode kalder en anden db-metode – hvem åbner og hvem lukker?

FEN Databaser/dbAdgang123 Opgaver Prøv det! –Fx til VW-databasen