120 likes | 289 Views
DB-adgang - Connectionless. Connectionless DataAdapter DataSet. Connection vs. Connectionless. Connection: Open Connection Udfør db-operationer Luk Connection Der arbejdes på aktuelle data Andre applikationer lukkes evt. ude. Connection vs. Connectionless. Connectionless:
E N D
DB-adgang - Connectionless Connectionless DataAdapter DataSet FEN Databaser/DBAdgang2
Connection vs. Connectionless • Connection: • Open Connection • Udfør db-operationer • Luk Connection • Der arbejdes på aktuelle data • Andre applikationer lukkes evt. ude FEN Databaser/DBAdgang2
Connection vs. Connectionless • Connectionless: • Tag en kopi af et databaseudsnit • Udfør db-operationer på kopien • Andre applikationer kan ændre data • Der arbejdes evt. på en uaktuel kopi af data • Data ændres i den lokale kopi: • ved update checkes om andre har ændret dataene i kopien • i så fald afvises opdateringen (ConcurrencyException) FEN Databaser/DBAdgang2
Overblik - disconnected databaseadgang • Opret en Connection (Kan i VS.NET gøres gennem DataAdapteren) • Opret en DataAdapter • Tilføj SQL-statement(s) til DataAdapteren • Fyld et DataSet-objekt (kopi af dele af db) vha. en DataAdapter • DataSet-objekt indeholder DataTable-objekter • DataTable-objekter indeholder collections af rækker og kolonner FEN Databaser/DBAdgang2
Disconnected - skridt for skridt • Opret en Connection • Opret en DataAdapter (indlejrer SQL) • Fyld et DataSet med indholdet af DataAdapter • Opdater evt. DB med DataAdapters Update() FEN Databaser/DBAdgang2
Opret forbindelse #region Connection object code // Create and open a connection. SqlConnection cn = new SqlConnection(); cn.ConnectionString = @"Server=PCM06073\SQLEXPRESS;” +”Initial Catalog=miniBank;Integrated Security=True;"; cn.Open(); ShowConnectionStatus(cn); #endregion FEN Databaser/DBAdgang2
Fyld DataSet // Create a SQL-string. string strSQL = "SELECT * FROM Account"; // Create a data adapter, a data set and a data table SqlDataAdapter myDA = new SqlDataAdapter(strSQL, cn); DataSet ds = new DataSet(); myDA.Fill(ds, "Account"); cn.Close(); ShowConnectionStatus(cn); FEN Databaser/DBAdgang2
Udskriv data- DataSet indeholder collection af DataTable-objekter DataTable dtAccounts = ds.Tables["Account"]; //Print table headings Console.WriteLine(dtAccounts.Columns[0].Caption + "\t" + dtAccounts.Columns[1].Caption + "\t" + dtAccounts.Columns[2].Caption + "\t" + dtAccounts.Columns[3].Caption); Console.WriteLine(); // Loop over the results. for(int i= 0; i<dtAccounts.Rows.Count; i++) { DataRow r = dtAccounts.Rows[i]; Console.WriteLine(r["accNo"]+"\t"+r["balance"]+"\t" + r["ir"]+"\t"+r["clCpr"]); } FEN Databaser/DBAdgang2
Hvis DB skal opdateres • Tilføj et commandobjekt til dataadapteren • InsertCommand • UpdateCommand • DeleteCommand • Gøres vha. parametriserede queries, fx: 1. parameter: sql da.InsertCommand = new OleDbCommand("INSERT INTO ” + Ansat (løn, navn, stilling) VALUES (?, ?, ?)",dbconn); da.Update(ds, ”Ansat”); Her opdateres DB. Kan fejle (ConcurrencyException) 2. parameter: connection FEN Databaser/DBAdgang2
Traditionel WEB-adgang til DB • Præsentationslag: • WEB-serveren genererer HTML, som præsenteres i browseren hos klinten • Applikationslag (forretningslogik) er indlejeret i web-serveren i form af scripts, som bla. kalder databaselaget • Databaselag (centraliseret DBMS) • Interne applikationer på applikationsserveren: • forretningslogik er dubleret (WEB-server og appl.-server) Præsentationslag (browser) WEB-klienter WEB-server Applikationslag firewall Dedikeret klient Applikations-server Databaselag – (fx SQL-baserede DBMS på en databaseserver) FEN Databaser/DBAdgang2
Præsentationslag Dedikeret klient Dedikeret klient WEB-klienter Dedike-ret klient WEB-server Applikations-server firewall Databaselag – (fx SQL-baserede DBMS’er på flere databaseservere) I dag: n-tier Client/Server arkitektur: • Præsentationslag: • dedikerede klienter, inden for eller uden for firewallen • web-browser via en web-server. Bemærk, at web-serveren er klient i forhold til applikations-serveren • Dedikerede klienter, som til via web-services på web-serveren (web-serveren fungerer som proxy) • Applikationslag (forretningslogik)Bør ikke ligge på web-serveren • Databaselag (centraliseret DBMS) • Der kan være flere database-servere i databaselaget, i så fald får applikationslaget rollen som koordinator ved globale transaktioner Tilgår web-services FEN Databaser/DBAdgang2
Særlige forhold ved WEB-adgang Skal vi vælge Connection-orienteret eller Connection-løs forbindelse? Præsentationslag Dedikeret klient Dedikeret klient WEB-klienter Dedike-ret klient WEB-server Applikations-server firewall Databaselag – (fx SQL-baserede DBMS’er på flere databaseservere) FEN Databaser/DBAdgang2