ADO.NET · tworzenie i przetwarzanie lokalnych relacyjnych baz danych

Slides:



Advertisements
Podobne prezentacje
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Advertisements

Projekt Do kariery na skrzydłach – studiuj Aviation Management Projekt współfinansowany ze ś rodków Europejskiego Funduszu Społecznego. Biuro projektu:
Usługi sieciowe Wykład 9 VPN
Równoległe kwerendy danych
Analiza wywołania i przebiegu przerwań w systemie Linux
tworzenie połączeń sieciowych
Java Server Faces Tomasz Nowak.
ALLEGRO PIERWSZA GRA: WYŚCIG
C++ w Objectivity Marcin Michalak s1744. Pomocne pakiety: Data Definition Language (DDL). Standard Template Library (STL). Active Schema.
Wybrane elementy C#, BCL
Technologia .Net Bazy danych część 2..
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
18/11/ Języki programowania 1 Piotr Górczyński Biblioteki.
SQL Server Native XML Web Services
Saint Nicolaus.
Visual Studio Codename „Orcas”, LINQ
Java vs C# Michał Prządka Tomasz Nowak
OOPC++ - operatory1 Operatory class complex { private: double re, im; public: complex (double r, double i = 0) { re = r; im = i; } friend complex operator+
GUI Struktury Spotkanie integracyjne Nazwa wydziału: EAIiE Nazwa katedry: Informatyka Miejsce i data prezentacji: Kraków,
Dzielenie relacyjne / Relational Division
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
LINQ - Language Integrated Query Unifikacja dostępu do danych Uproszczone odpytywanie obiektów, daych i XML poprzez integrację zapytań z językiem programownia.
C#, Visual Studio 2010, .NET 4.0 dr inż. Marcin Radom
Język C# ( 4.0 ) using System; namespace HeWo { class Hello { static void Main(string [] args) { Console.WriteLine("Hello World!"); }
Łukasz Monkiewicz.
Współprogramy Plan: Motywacja Składnia Scenariusz obiektu współprogramu Przykłady Producent – konsument ( instrukcja attach ) Czytelnik -pisarze ( instukcja.
142 JAVA – sterowanie i wątki public class A20 extends javax.swing.JApplet implements ActionListener { private int licznik = 0; private JTextField t =
Warstwy aplikacji sieciowych
„Tworzenie aplikacji sieciowych w języku Java”
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Tworzenie aplikacji sieciowych w języku Java Networking Prezentacja.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Tworzenie aplikacji sieciowych w języku Java Exceptions Prezentacja.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Tworzenie aplikacji sieciowych w języku Java Threads Prezentacja.
Technologia.Net Bazy danych. Technologia ADO.Net Służy do dostarczania danych z rożnych źródeł (baz danych) do aplikacji Jest produktem Microsoft Umożliwia.
Język SQL – ciąg dalszy DML (Data Manipulation Language)
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
MS SQL SERVER udział w rynku. Source: Gartner Dataquest (May 2006) Company Market Share (%) Market Share (%) Growth (%) Oracle6, ,
Język C# Copyright, 2004 © Adam Czajka.
MS ASP.NET 2005/2006
Przestrzeń System podstawowe klasy i klasy bazowe.
1 Building Integration System - Training Internal | ST-IST/PRM1 | 02/2008 | © Robert Bosch GmbH All rights reserved, also regarding any disposal,
Tadeusz Janasiewicz IT Group, Tadeusz Janasiewicz, WSUS, IT Group, r.
Monika Rokosik Katarzyna Rola. Wykrywanie kursu akcji poniżej dołka znajdującego się pomiędzy dwoma sąsiednimi górkami, z których późniejsza jest mniejsza.
PLATFORMY TECHNOLOGICZNE LINQ mgr inż. Tomasz Gawron.
Rozproszone transakcje z wykorzystaniem usługi Service Broker w SQL Server 2008 R2 Andrzej Ptasznik.
Porysujmy trochę czyli Łączenie SQLa, AutoCADa i Delphi
LINQ (Language-INtegrated Query) Marcin Bohdziewicz s4070.
Dr inż. Piotr Czapiewski. Overloading Znaczenie inne niż w większości języków obiektowych Metoda dynamicznego tworzenia pól i metod Magiczne metody.
Krzysztof Manuszewski
Asynchroniczność w Windows 8 Jakub Binkowski. O mnie Jakub Binkowski Lead.NET Developer.
db4o Kacper Skory Marcin Talarek
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
Tworzenie tabel na stronach internetowych Program NVU Spis prezentacji: 1.Wstawianie tabeliWstawianie tabeli 2.ZakładkiZakładki.
Tablice.
Warsztaty C# Część 2 Grzegorz Piotrowski Grupa.NET PO
Bazy danych.
A. Jędryczkowski – 2006 ©. Tablica to struktura danych zawierająca zbiór obiektów tego samego typu i odpowiada matematycznemu pojęciu wektora (tablica.
W.K. (c) Bazy danych Access. 2W.K. (c) 2007 Baza danych - definicje Baza danych to zbiór informacji dotyczących określonego tematu (stanowiących.
HTML cz.3 Tabele cd. oraz ramki
Rozdział 3: Bezpieczeństwo w sieci opartej na systemie Windows 2000.
Magic Janusz ROŻEJ Komtech Sp. z o.o.
18/11/ Języki programowania 1 Piotr Górczyński Kontrolki.
TROCHĘ HISTORII Marek Zając PO CO UŻYWAĆ OPENCL? Marek Zając.
1.
Piotr Czapiewski Wydział Informatyki ZUT.  Extensible Markup Language  Język znaczników  Human-readable and machine-readable  Niezależny od platformy.
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 6.
Technologia.Net Bazy danych. Technologia ADO.Net Służy do dostarczania danych z rożnych źródeł (baz danych) do aplikacji Jest produktem Microsoft Umożliwia.
.NET i Bazy Danych Projekt: Wadim Grasza.
Zapytania ( 3.0 ) wyrażenia zapytaniowe - querry expressions przestrzeń nazw LINQ - Language-Integrated Query 3 etapy : 1. określenie źródła danych, 2.
J2EE: Bazy danych c.d. Język zapytań EJB QL.
Connecticut Core Standards for English Language Arts & Literacy
Zapis prezentacji:

ADO.NET · tworzenie i przetwarzanie lokalnych relacyjnych baz danych ·   współpraca z zewnętrznym systemem zarządzania relacyjną bazą danych

Lokalna baza danych programu ·    przestrzeń nazw System.Data  klasy: DataColumn, DataRow, DataTable, DataGridView, DataSet ·       DataColumn  reprezentacja pojedynczej kolumny tabeli danych DataTable DataColumn colName = new DataColumn(); colName.DataType = Type.GetType("System.String"); // ReadOnly, Caption, ColumnName

·       dodawanie do tabeli danych DataTable FirstTable = new DataTable("FirstTable"); FirstTable.Columns.Add(colName); ·       autoinkrementacja (przy tworzeniu wierszy) DataColumn empID = new DataColumn ("EmpID", Type.GetType("System.Int32")); empID.AutoIncrement = true; empID.AutoIncrementSeed = 100; empID.AutoIncrementStep = 10;

·       DataRow  wiersz tabeli danych DataTable DataTable empTable = new DataTable("Employees"); // columns EmpID, FirstName, LastName DataRow row = empTable.NewRow(); row["FirstName"] = "John"; row["LastName"] = "Brown"; empTable.Rows.Add(row); // DataRow.Delete() // AcceptChanges(), RejectChanges(), // BeginEdit(), EndEdit(), CancelEdit() // DataRow.Deleted , .Detached, .Modified // .New, .Unchanged

·       DataTable  tabela danych (relacja) ─    definiowanie i dodawanie kolumn ─    dodawanie i wypełnianie wierszy ─    określenie klucza głównego ( kluczy ) DataColumn[ ] PK = new DataColumn [ 1 ]; PK [ 0 ] = MyTable.Columns["EmpID"]; FirstTable.PrimaryKey = PK; ·       wyświetlanie tabeli danych  element DataGridView ·       przeciągnąć z palety elementów lub DataGridView TheGrid = new DataGridView(); · następnie TheGrid.DataSource = FirstTable; DaBa

·       usuwanie wierszy try { FirstTable.Rows[ rowNumber ].Delete( ); FirstTable.AcceptChanges( ); } catch( Exception ex ) { MessageBox.Show( ex.Message ); }

·       filtrowanie tabeli danych  string filterStr = "FirstName='John'"; DataRow [ ] TheFirstName = FirstTable.Select( filterStr ); / ,ftSt2, ... ·       wyrażenie filtrujące AND OR // operatory logiczne < <= > >= = <> IN LIKE // relacje + - * / % // operatory arytmetyczne *xxx xxx* %xxx xxx% // uogólnienia Sum Avg Min Max Count StDev Var // funkcje

·       sortowanie tabeli danych  TheFirstName = FirstTable.Select ( filterStr, "LastName ASC"); // "LastName DESC"   ·       aktualizacja wierszy DataRow temp;   for(int i=0; i < TheFirstName.Length; i++) { temp = TheFirstName[ i ]; temp["FirstName"] = "Ben"; }

· DataSet  relacyjna baza danych ·       dowolna liczba tabel DataTable z określonymi powiązaniami Customers Inventory FirstName LastName CustID (k) CarID (k) Make Color PetName Orders OrderID (k) CarID CustID

·       tworzenie bazy danych // Data Tables private DataTable inventoryTable = new DataTable("Inventory"); private DataTable customersTable = new DataTable("Customers"); private DataTable ordersTable = new DataTable("Orders");

// Data Set private DataSet carsDataSet = new DataSet("CarDataSet"); // make tables, set keys // add to data set carsDataSet.Tables.Add(ordersTable); carsDataSet.Tables.Add(customersTable); carsDataSet.Tables.Add(carsTable); // connect to data grid CarDataGrid.SetDataBinding (carsDataSet, "Inventory"); CustomerDataGrid.SetDataBinding (carsDataSet, "Customers");

·       definiowanie powiązań pomiędzy tabelami DataRelation dr = new DataRelation("CustomerOrder", // parent carsDataSet.Tables["Customers"]. Columns["CustID"], // child carsDataSet.Tables["Orders"]. Columns["CustID"]); // carsDataSet.Relations.Add(dr); // Exception

dr = new DataRelation("InventoryOrder", carsDataSet dr = new DataRelation("InventoryOrder", carsDataSet.Tables["Inventory"]. Columns["CarID"], carsDataSet.Tables["Orders"]. Columns["CarID"]); // carsDataSet.Relations.Add(dr);

· nawigowanie pomiędzy tabelami, np ·       nawigowanie pomiędzy tabelami, np. wyszukanie opisu zamówienia i opisu samochodu na podstawie custID string strInfo = ""; DataRow drCust = null; DataRow[ ] drsOrder = null; int theCust = ... ; // custID   // using custID, get the correct row drCust = carsDataSet.Tables["Customers"]. Rows[theCust]; strInfo += "Customer Name" + drCust["FirstName"] + "\n";

// navigate from customer table // to order table.   drsOrder = drCust.GetChildRows (carsDataSet.Relations["CustomerOrder"]); // Get customer orders descriptions if(drsOrder != null) foreach(DataRow r in drsOrder) strInfo += "Order Number: " + r["OrderID"] + "\n";

// navigate from order table // to inventory table   if (drsOrder != null) { DataRow[ ] drsInv = new DataRow [drsOrder.Length]; for(int i = 0; i < drsOrder.Length; ++i ) drsInv[i] = drsOrder[i].GetParentRows (carsDataSet.Relations["InventoryOrder"]); }

// Get cars descriptions   if(drsInv.Length > 0) foreach(DataRow r in drsInv) { strInfo += "Make: " + r["Make"] + "\n"; strInfo += "Color: " + r["Color"] + "\n"; strInfo += "Pet Name: " + r["PetName"] + "\n"; } MessageBox.Show(strInfo + " Info based on cust ID"); CarDataSet Grid, PracSam Wypożyczalnia

·       LINQ to DataSet var ImPe = from osa in dataSet1.Tables["Osoby"].AsEnumerable() where osa["Imie"].ToString() == "Alicja" //osa["Imie"] -> object select new { im = osa["Imie"], pe = osa["Pobory"] }; foreach (var os in ImPe) st += os.im + ", " + os.pe.ToString() + "\n"; LinqDS

ADO.NET ·       powiązanie z istniejącą bazą danych  OleDb Provider : System.Data.OleDb  Sql Provider : System.Sql.SqlClient ·       nawiązywanie połączenia OleDbConnection cn = new OleDbConnection(); cn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;" + @"data source = C:\NET\C#\Examples\Access_DB\cars.mdb"; // odpowiednio dla SQL Server i Oracle cn.Open(); // BeginTransaction, EndTransaction, // RollbackTransaction, ... cn.Close();

·       sformułowanie polecenia SQL string strSQL = "Select ... "; OleDbCommand MyCommand = new OleDbCommand( strSQL , cn ); // albo new OleDbCommand( ); MyCommand.Connection = cn; MyCommand.CommandText = strSQL;

·       odczytanie strumienia rekordów ( bez nawigacji, bez zapisu, przetwarzanie połączeniowe ) OleDbDataReader TheDataReader; TheDataReader = TheCommand.ExecuteReader(); while ( TheDataReader.Read() ) { .... TheDataReader["Make"] ..... } // można też przekazywać parametry  // OleDbParameter // i wykonywać procedury z bazy danych  // MyCommand.ExecuteNonQuery

·       odwzorowanie bazy danych w DataSet  OleDbDataAdapter // open a connection OleDbConnection cn = new OleDbConnection(); cn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;" + @"data source = C:\NET\C#\Examples\Access_DB\cars.mdb"; // cn.Open();

// create commands OleDbCommand selectCmd = new OleDbCommand("SELECT ....", cn); // make a data adapter & // associate commands OleDbDataAdapter dAdapt = new OleDbDataAdapter(); dAdapt.SelectCommand = selectCmd; // DeleteCommand, InsertCommand // UpdateCommand

// create and fill the DataSet DataSet theDS = new DataSet("CarsDataSet"); dAdapt.Fill(theDS, "Inventory"); // fill one // of tables ........ // add some records to myDS DataRow[] theDataRowArray = theDS.Tables[0]. Select(null, null, DataViewRowState.Added); dAdapt.Update( theDataRowArray ); cn.Close(); Cars, BazaProjektów

·       LINQ to SQL - pobieranie danych z DataSet ( zwykłe połączenie z bazą danych) var NaPe = from car in dataSet1.Tables["Inventory"].AsEnumerable() where (string)car["Color"] == "Red" select new { ma = (string)car["Make"], pe = (string)car["PetName"] }; Linq3

- pobieranie danych z DataSet ( automatyczne dołączanie bazy danych ) Data / Add New Data Source / Database New Connection / Change / Browse / Tables powstaje klasa opakowująca tabele danych : tabele, kolumny => składowe tej klasy dodać element dataGridView wskazać jako źródło danych wybraną tabelę pobieranie danych var MaCo = from car in carsDataSet.inventory where car.Color == "Black„ select new { ma = car.Make, pt = car.PetName }; Linq4

Przetwarzanie plików XML ·       wyczytywanie i zapis plików XML a) serializacja using System.Xml.Serialization; // [Serializable] public class Disk { public string Make ; [NonSerialized] public int something ; public bool SATA; }

[Serializable] public class Computer { public Disk disk = new Disk ( ) ; public long Price ; } // public class Laptop : Computer { public double Weight;

XmlSerializer xs = new XmlSerializer(typeof (Laptop)); FileStream data = File.Create ("Lap.xml"); // Laptop lap = new Laptop(); xs.Serialize(data , lap ); data.Close(); data = File.OpenRead("Lap.xml"); Laptop nn = (Laptop)xs.Deserialize(data);

<?xml version="1.0"?> <Laptop xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <disk> <Make>NEC</Make> <SATA>true</SATA> </disk> <Price>2127</Price> <Weight>2</Weight> </Laptop>

- serializowane są składowe publiczne - musi istnieć publiczny konstruktor bezargmentowy - nazwy składowych => nazwy elementów XML - atrybuty [XmlAttribute("Producer")] public string make; // [XmlIgnore]

b) odczyt bez ładowania dokumentu XmlTextReader // XmlTextReader xtr = new XmlTextReader("Lap.xml"); xtr.Read(); // kolejny element Console.WriteLine ( xtr.NodeType.ToString() + " < " + xtr.Name + " > " + xtr.Value ); XRD

c) tworzenie pliku XML XmlTextWriter XmlTextWriter xw = new XmlTextWriter("NaPro.xml", Encoding.UTF8); // xw.WriteStartElement("car"); xw.WriteElementString("Name", CarList[i, 0]); xw.WriteValue(i); xw.WriteEndElement(); xw.Flush(); xw.Close(); XWR

·       analiza pliku XML XmlDocument - podstawowe właściwości ChildNodes // węzły podrzędne I stopnia FirstChild // pierwszy węzeł podrzędny Name // nazwa węzła NodeType // typ węzła XmlNodeTypes Value // wartość (test) Attributes // atrybuty InnerText // wartość węzła i wszystkich // węzłów zagnieżdżonych InnerXml // XML : wszystkie zagnieżdżone OuterXml // XML : bieżący // i wszystkie zagnieżdżone

- odnajdywanie elementów GetElementByTagName => XmlNodeList XmlDocument xdoc = new XmlDocument(); xdoc.Load("FileName"); string TagName = "City"; // <City> Oslo </City> XmlNodeList xlist = xdoc.GetElementsByTagName(TagName); foreach (XmlNode xn in xlist) { xn. .... } string st = xn.FirstChild.Value; // albo st = xlist[0].FirstChild.Value; XDoc1

- dopisywanie i usuwanie elementów xdoc = ..... // XmlDocument parent = ..... // from XmlNodeList XmlNode newCar = xdoc.CreateElement("car"); parent.AppendChild(newCar); XmlNode newName = xdoc.CreateElement("Name"); newCar.AppendChild(newName); newName.AppendChild ( xdoc.CreateTextNode("Liana") );

xdoc = ..... // XmlDocument parent = ..... // from XmlNodeList child = ...... // one of parent’s children // parent.RemoveChild(child); // and all its children xdoc.Save("FileName"); XDoc2

- wyrażenia XPath <Order> <Client> <Name>John Brown</Name> </Client> <Items> <Item> <Name>DVD Recorder</Name> <Price>142,99</Price> </Item> </Items> </Order>

XmlDocument doc = new XmlDocument(); doc.Load("orders.xml"); // XmlNodeList nodes = doc.SelectNodes("/Order/Items/Item/Name"); foreach (XmlNode node in nodes) { Console.WriteLine(node.InnerText); }

·       LINQ to XML - tworzenie pliku XML z kolekcji XDocument xml = new XDocument( new XDeclaration("1.0", "utf-8", "yes"), new XElement("ListaOsob", from osoba in listaOsob // list<Osoba> orderby osoba.Wiek select new XElement("Osoba", new XAttribute("Id", osoba.Id), new XElement("Nazwisko", osoba.Nazwisko), new XElement("Wiek", osoba.Wiek)))

- pobieranie danych z pliku XML XDocument xml = XDocument.Load("Osoby.xml"); // IEnumerable<string> listaOsobPelnoletnich = from osoba in xml.Descendants("Osoba") where int.Parse(osoba.Element("Wiek").Value) >= 18 orderby osoba.Element("Nazwisko").Value select osoba.Element("Nazwisko").Value; LinqXML

·       analiza poprawności pliku XML - składnia XML XmlDocument xdoc = new XmlDocument(); xdoc.Load("FileName"); // Exception - wzorzec pliku XML => *.xsd DataSet ds = .... ds.WriteXmlSchema(FileName); // xsd.exe file.xml => file.xsd XRD

XmlSchemaSet sc = new XmlSchemaSet(); sc.Add(null, "Cars.xsd"); XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationType = ValidationType.Schema; settings.Schemas = sc; XmlReader reader = XmlReader.Create("Cars.xml", settings); try { while (reader.Read()) { } } // read all catch (XmlSchemaValidationException err) {...} Veri

·   korzystanie z serwisów internetowych ( Web Service ) - Project / Add Web Reference //.asmx - język WSDL <wsdl:definitions targetNamespace= "http://terraserver-usa.com/TerraService2/"> <s:element name="ConvertLonLatPtToNearestPlace"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="point" type="tns:LonLatPt"/> </s:sequence> </s:complexType> </s:element>

<s:complexType name="LonLatPt"> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="Lon" type="s:double"/> <s:element minOccurs="1" maxOccurs="1" name="Lat" type="s:double"/> </s:sequence> </s:complexType>

<s:element name="ConvertLonLatPtToNearestPlaceResponse"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="ConvertLonLatPtToNearestPlaceResult" type="s:string"/> </s:sequence> </s:complexType> </s:element> . . . . . . . . . . . . .

- protokół SOAP <soap:Envelope xmlns:xsi="http://www.w3.org .... <soap:Body> <GetWeather xmlns="http://www.webserviceX.NET"> <CityName>string</CityName> <CountryName>string</CountryName> </GetWeather> </soap:Body> </soap:Envelope>

net.webservicex.www.GlobalWeather gw = new net.webservicex.www.GlobalWeather( ); // string panstwo = " .... "; string Miasta = gw.GetCitiesByCountry(panstwo); // pobranie nazwy miasta z tekstu XML string Pogoda = gw.GetWeather(miasto, panstwo); // pobranie danych pogodowych z tekstu XML WebSer