Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


Prezentacja na temat: "ADO.NET tworzenie i przetwarzanie lokalnych relacyjnych baz danych współpraca z zewnętrznym systemem zarządzania relacyjną bazą danych."— Zapis prezentacji:

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

2 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

3 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;

4 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

5 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

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

7 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

8 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"; }

9 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

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

11 // 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");

12 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

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

14 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";

15 // 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";

16 // 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"]); }

17 // 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

18 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

19 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;" source = C:\NET\C#\Examples\Access_DB\cars.mdb"; // odpowiednio dla SQL Server i Oracle cn.Open(); // BeginTransaction, EndTransaction, // RollbackTransaction,... cn.Close();

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

21 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

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

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

24 // 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

25 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

26 - 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

27 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; }

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

29 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);

30 NEC true

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

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

33 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

34 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

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

36 - 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") );

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

38 - wyrażenia XPath John Brown DVD Recorder 142,99

39 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); }

40 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 orderby osoba.Wiek select new XElement("Osoba", new XAttribute("Id", osoba.Id), new XElement("Nazwisko", osoba.Nazwisko), new XElement("Wiek", osoba.Wiek)))

41 - pobieranie danych z pliku XML XDocument xml = XDocument.Load("Osoby.xml"); // IEnumerable 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

42 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

43 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

44 korzystanie z serwisów internetowych ( Web Service ) - Project / Add Web Reference //.asmx - język WSDL

45

46

47 - protokół SOAP string

48 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


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

Podobne prezentacje


Reklamy Google