Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałJadwiga Grosicki Został zmieniony 11 lat temu
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
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.