Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

ADO.NET · tworzenie i przetwarzanie lokalnych relacyjnych baz danych

Podobne prezentacje


Prezentacja na temat: "ADO.NET · tworzenie i przetwarzanie lokalnych relacyjnych 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
dr = new DataRelation("InventoryOrder", carsDataSet.Tables["Inventory"] Columns["CarID"], carsDataSet.Tables["Orders"]. Columns["CarID"]); // carsDataSet.Relations.Add(dr);

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

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;" @"data 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 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;" @"data 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 ; } // 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 <?xml version="1.0"?> <Laptop xmlns:xsi=" XMLSchema-instance" xmlns:xsd=" <disk> <Make>NEC</Make> <SATA>true</SATA> </disk> <Price>2127</Price> <Weight>2</Weight> </Laptop>

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.Name + " > " + 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"; // <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

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 parent’s children // parent.RemoveChild(child); // and all its children xdoc.Save("FileName"); XDoc2

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

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

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 <wsdl:definitions targetNamespace= " <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>

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

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

47 - protokół SOAP <soap:Envelope xmlns:xsi=" .... <soap:Body> <GetWeather xmlns=" <CityName>string</CityName> <CountryName>string</CountryName> </GetWeather> </soap:Body> </soap:Envelope>

48 net.webservicex.www.GlobalWeather gw =
new net.webservicex. ); // 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"

Podobne prezentacje


Reklamy Google