Wykład 12. ADO.NET model bezpołączeniowy
|
|
- Katarzyna Morawska
- 8 lat temu
- Przeglądów:
Transkrypt
1 Wykład 12 ADO.NET model bezpołączeniowy Klasa DataSet kolekcja DataTable Obiekty DataColumn Obiekty DataRow Ładowanie danych do obiektu DataSet użycie DataReader i DataAdapter Aktualizacja bazy za pomocą obiektu DataAdapter Definiowanie powiązań między tabelami w obiekcie DataSet Model połączeniowy czy bezpołączeniowy? 1
2 ADO.NET model bezpołączeniowy Model bezpołączeniowy wykorzystuje obiekt DataSet jako pamięć podręczną. Obiekt DataAdapter służy jako pośrednik pomiędzy obiektem DataSet a źródłem danych, z którego pochodzą dane w pamięci. Po załadowaniu danych, DataAdapter zwraca obiekt połączenia do puli, odłączając w ten sposób dane od źródła danych. DataAdapter jest klasą osłonową wokół obiektów DataReader dostawców, które wykonują rzeczywiste ładowanie danych. 2
3 3
4 Klasa DataSet Obiekt klasy DataSet pełni rolę bazy danych w pamięci. Jego właściwość Tables udostępnia kolekcję obiektów DataTables, które zawierają dane i opisujące je szablony. Właściwość Relations zwraca kolekcję obiektów DataRelation, które definiują powiązania między tabelami. Metody Copy(), Merge() i Clear() klasy DataSet odpowiadają za kopiowanie, scalanie i usuwanie zawartości obiektów tej klasy. DataSet i DataTable to podstawowe elementy architektury ADO.NET i w przeciwieństwie do klas, Connection, DataReader i DataAdapter nie są powiązane z konkretnym dostawcą danych. 4
5 Aplikacja może tworzyć, definiować i zapełniać obiekty DataSet pochodzące z dowolnego źródła danych. Hierarchia klasy DataSet 5
6 Klasa PropertyCollection jest zbiorem niestandardowych właściwości przechowywanych i udostępnianych jako wartość właściwości DataSet.ExtendedProperties. Tej klasy używa się do przechowywania oznaczeń czasowych lub opisowych informacji, na przykład wymagań dotyczących sprawdzania poprawności kolumn w tabelach zbioru danych. Kolekcja DataTable Kolekcja obiektów DataTable (klasa DataTableCollection) jest dostępna za pośrednictwem właściwości DataSet.Tables. Obiekty tej klasy przechowują dane w formacie wiersz - kolumna (naśladują tabele relacyjnych baz danych). Dzięki swoim właściwościom i metodom może stanowić samodzielne źródło danych lub część kolekcji tabel w obiekcie DataSet. Najważniejsze właściwości tej klasy Columns i Rows definiują układ i zawartość tabeli. 6
7 Obiekty DataColumn Właściwość DataTable.Columns udostępnia kolekcję obiektów DataColumn, które reprezentują wszystkie pola danych obiektu DataTable. Właściwości kolumn zebrane razem tworzą szablon danych tabeli. Właściwość ColumnName DataType MaxLength AllowDBNull ReadOnly Unique Expression Caption DataTable Opis Nazwa kolumny Typ danych przechowywanych w kolumnie Przykład: col1.datatype = System.Type.GetType("System.String") Maksymalna długość kolumny tekstowej (-1 jeżeli maksymalna długość jest nieokreślona) Określa, czy kolumna może zawierać wartości NULL Określa czy można modyfikować zawartość kolumny Określa, czy kolumna musi zawierać unikalne wartości Wyrażenie definiujące sposób obliczania wartości kolumny Przykład colvat.expression = colnetto*0.22 Nagłówek wyświetlany w interfejsie użytkownika Nazwa obiektu DataTable zawierającego daną kolumnę 7
8 Kolumny obiektu DataTable są tworzone automatycznie w czasie zapełniania tabeli wynikami zapytania do bazy danych lub w wyniku odczytu danych z pliku XML. W przypadku kiedy aplikacja zapełnia tabele dynamicznie (na podstawie danych podawanych przez użytkownika lub pobieranych w czasie rzeczywistym), konieczne może być napisanie kodu definiującego strukturę tabeli. Przykład przedstawia fragment kodu, który tworzy obiekt DataTable, obiekty DataColumn, przypisuje wartości do kolumn, a następnie dodaje te kolumny do obiektu DataTable. Kod zawiera również definicję kolumny wyliczanej : 8
9 DataTable tabela = new DataTable("Zamowienie"); DataColumn kolumna = new DataColumn("ID", Type.GetType("System.Intl6")); kolumna.unique = true; //Wartość identyfikatora musi hyc // niepowtarzalna dla każdego wiersza danych kolumna.allowdbnull = false; tabela.columns.add(kolumna); kolumna = new DataColumn("Cena", Type.GetType("System.Decimal")); tabela.columns.add(kolumna); kolumna = new DataColumn("Ilosc", Type.GetType("System.Intl6")); tabela.columns.add(kolumna); kolumna = new DataColumn("Razem", Type.GetType("System.Decimal")); kolumna.expression = "Cena*Ilosc"; tabela.columns.add(kolumna); // Wyświetla nazwy kolumn i typ danych foreach (DataColumn dc in tabela.columns) { Console.WriteLine(dc.ColumnName); Console.writeLine(dc.DataType.ToString()); } 9
10 Obiekty DataRow Dane są dodawane do tabeli po utworzeniu nowego obiektu DataRow, zapełnianie go danymi z kolumn i dodawanie go do kolekcji Rows tabeli. Fragment kodu przedstawia przykład umieszczenia danych w tabeli utworzonej w poprzednim przykładzie: DataRow wiersz; wiersz = tb.newrow(); // Tworzenie obiektu DataRow wiersz["cena"] = 21.85; wiersz["ilosc"] = 2; wiersz["id"] = 12001; tabela.rows.add(wiersz); //Dodawanie wiersza do kolekcji Rows Console.WriteLine(tabela.Rows[0]["Razem"].ToString(); // 43,90 10
11 Klasa DataTable ma metody, które umożliwiają zatwierdzanie i anulowanie zmian danych w tabeli. Obiekty tej klasy przechowują stan każdego wiersza we właściwości DataRow.RowState. Może ona przyjmować jedną z pięciu wartości wyliczenia DataRowState: Added, Deleted, Detached, Modified lub Unchanged. Rozszerzenie poprzedniego przykładu pokazuje, jak ustawiać te wartości: tabela.rows.add (wiersz); tabela.acceptchanges(); Console.Write(wiersz.RowState); tabela.rows[0].delete(); //Anulowanie usunięcia tabela.rejectchanges(); //Dodawanie //Zatwierdzanie zmian //Niezmieniony wpis // Usunięcie wpisu //Anulowanie zmian Console.Write(tabela.Rows[0].RowState); // Niezmieniony wpis DataRow myrow; myrow = tabela.newrow(): // Tworzenie obiektu 11
12 Metody AcceptChanges() i RejectChanges() klasy DataTable to odpowiedniki zatwierdzania i anulowania operacji w bazie danych. Metody te dotyczą wszystkich zmian wprowadzonych od czasu załadowania tabeli lub poprzedniego wywołania metody AcceptChanges(). W pokazanym przykładzie można było przywrócić usunięty wiersz, ponieważ program nie zatwierdził usunięcia przed wywołaniem metody RejectChanges(). Zmiany są wprowadzane w obiekcie DataTable, a nie w oryginalnym źródle danych. Dla każdej kolumny wiersza ADO.NET przechowuje oryginalną i aktualną wartość. Po wywołaniu metody RejectChanges() aktualne wartości są zmieniane na oryginalne wartości. W przypadku wywołania metody AcceptChanges() to wartości oryginalne zostają przekształcone na wartości aktualne. Dostęp do dwóch zbiorów wartości (przed i po zatwierdzeniu zmian) można uzyskać za pomocą wartości wyliczeniowych Current i Original właściwości DataRowVersion: 12
13 DataRow r = tb.rows[0]; r["cena"] = 24.95; r.acceptchanges(); r["cena"] = 19.61; Console.WriteLine("Aktualna: {0} Oryginalna: {1} ", r["cena", DataRowVersion.Current], r["cena". DataRowVersion.Original]); //Dane wyjściowe: Aktualna: 19,61 Oryginalna: 24,95 13
14 Ładowanie danych do obiektu DataSet użycie obiektów DataReader i DataAdapter Obiektu DataReader można używać wraz z obiektami DataSet i DataTable do zapełniania tabeli wierszami danych wygenerowanymi przez zapytanie. Wymaga to utworzenia obiektu DataReader i przekazania go jako parametru do metody DataTable.Load(): cmd.commandtext = "SELECT * FROM studenci WHERE data_ur < 1980"; DbDataReader czytacz = cmd.executereader(commandbehavior.closeconnection); DataTable tabela = new DataTable("studenci"); tabela.load(czytacz); //Ładowanie danych i schematów do tabeli Console.WriteLine(czytacz.IsClosed); //True 14
15 Obiekt DataReader jest zamykany automatycznie po załadowaniu wszystkich wierszy. Parametr CloseConnection gwarantuje, że zamknięte zostanie także połączenie. Jeśli tabela już zawiera dane, metoda Load() scala nowe dane z istniejącymi wierszami. Scalanie zachodzi tylko wtedy, kiedy wiersze współdzielą klucz główny. Jeśli nie ma zdefiniowanego klucza głównego, nowe wiersze zostaną dodane na koniec tabeli. Przeciążona wersja metody Load() przyjmuje drugi parametr, który określa, w jaki sposób wiersze są scalane. Ten parametr to typ wyliczeniowy LoadOption, przyjmujący jedną z trzech wartości: OverwriteChanges, PreserveChanges lub Upsert. Te opcje określają, czy w wyniku scalania zostanie nadpisany cały wiersz, tylko oryginalne wartości czy tylko aktualne wartości. 15
16 Poniższy fragment kodu ilustruje, jak odbywa się scalanie danych z istniejącymi wierszami w celu nadpisania aktualnych wartości kolumn: cmd.commandtext = "SELECT * FROM studenci WHERE data_ur < 1980"; DbDataReader czytacz = cmd.executereader(); DataTable tabela = new DataTable("studenci"): tabela.load(czytacz); //Ładowanie wierszy do tabeli Console.Write(tabela.Rows[0][ num_stud"]); // Przypisanie klucza głównego, aby możliwe było scalenie // wierszy DataColumn[] kolumny = new DataColumn[1]; kolumny[0] = tabela.columns["num_stud"]; tabela.primarykey = kolumny; DataRow wiersz = tabela.rows[0]; //Pobranie pierwszego wiersza danych wiersz["num_stud"] = 99999; //Zmiana aktualnej wartości kolumny // Ponieważ obiekt DataReader jest zamknięty, trzeba go ponownie zapełnić czytacz = cmd.executereader(commandbehavior.closeconnection); //Scalanie danych z aktualnymi wierszami. Nadpisanie aktualnych wartości tabela.load(czytacz.loadoption.upsert); //Zaktualizowane wartości zostały nadpisane Console.Write(tabela.Rows[0]["num_stud"]); 16
17 Obiekt DataAdapter może służyć do zapełniania wynikami zapytania istniejącej tabeli lub do utworzenia nowej tabeli i zapełnienia jej tymi wynikami. Pierwszy etap tej operacji to utworzenie instancji obiektu DataAdapter dla konkretnego dostawcy danych. Do dyspozycji jest kilka przeciążonych wersji konstruktora: // (1) Najłatwiejszy sposób: przekazanie jako argumentów // zapytania i ciągu znaków połączenia String sql = "SELECT * FROM studenci"; SqlDataAdapter da = new SqlDataAdapter(sql, connstr); // (2) Przypisanie obiektu polecenia do właściwości // SelectCommand SqlDataAdapter da = new SqlDataAdapter(); SqlConnection conn = new SqlConnection(connStr); da.selectcommand = new SqlCommand(sql, conn); // (3) Przekazanie ciągu znaków zapytania i obiektu połączenia SqlConnection conn = new SqlConnection(connStr); SqlDataAdapter da = new SqlDataAdapter(sql, conn); 17
18 Konstruktor w pierwszej wersji przyjmuje dwa ciągi znaków polecenie i połączenie. Konstruktor tworzy na ich podstawie obiekt SqlCommand i przypisuje go do właściwości SelectCommand. Nie trzeba tu pisać kodu, który jawnie tworzy obiekty SqlCommand i SqlConnection. W wersjach przeciążonych, które przyjmują jako parametr obiekt połączenia, za otwieranie i zamykanie połączenia odpowiada obiekt DataAdapter. Jeśli doda się instrukcję jawnie otwierającą połączenie, trzeba także dodać kod, który je zamyka. W przeciwnym razie obiekt DataAdapter pozostawi połączenie otwarte, co blokuje dane w bazie danych. 18
19 Po utworzeniu obiektu DataAdapter wykonywana jest metoda Fill(), która ładuje dane do nowej lub istniejącej tabeli: DataSet ds = new DataSet(); // Tworzenie obiektu DataTable, ładowanie danych i //dodawanie ich do DataSet // Można użyć instrukcji da.fill(ds, "studenci"), aby // określić nazwę tabeli int ilerekordow = da.fill(ds); //Zwraca liczbę załadowanych rekordów W przypadku istniejących tabel działanie polecenia Fill zależy od tego, czy tabela ma klucz główny. Jeśli tak, wiersze mające klucz pasujący do klucza nowych danych zostają zastąpione. Nowe wiersze, które nie pasują do istniejących, są dodawane do obiektu DataTable. 19
20 Aktualizacja bazy za pomocą obiektu DataAdapter Po zakończeniu ładowania danych przez obiekt DataAdapter, służące do tego połączenie zostaje zamknięte. Zmiany w danych są odzwierciedlane jedynie w obiekcie DataSet, a nie w oryginalnym źródle danych. Aby wprowadzić te zmiany do źródła danych, należy użyć obiektu DataAdapter w celu odtworzenia połączenia i przesłania zmienionych wierszy do oryginalnej bazy danych. Do wykonania tego zadania można użyć tego samego obiektu DataAdapter, który służył do zapełnienia obiektu DataSet. 20
21 Klasa DataAdapter ma trzy właściwości przypisane do określonych poleceń SQL, które wykonują zadania odpowiadające nazwom tych właściwości. InsertCommand (wstawianie), DeleteCommand (usuwanie) UpdateCommand (aktualizacja). Te polecenia są wykonywane po wywołaniu metody Update() obiektu DataAdapter. Trudność polega na utworzeniu poleceń SQL, które wysyłają zmiany, i przypisaniu ich do odpowiednich właściwości obiektu DataAdapter. Wszyscy dostawcy danych zawierają implementację klasy CommandBuilder, której można użyć do automatycznej obsługi tych operacji. 21
22 Obiekt CommandBuider generuje polecenia niezbędne do aktualizacji źródła danych po wprowadzeniu zmian w obiekcie DataSet. Klasa CommandBuilder jest samowystarczalna. Można utworzyć jej obiekt, przekazując do konstruktora odpowiedni obiekt DataAdapter. Po wywołaniu metody DataAdapter.Update(), zostaną wygenerowane i wykonane polecenia SQL. Przykłady: DataTable tabela = ds.tables["studenci"]; // (1) Obiektu CommandBuilder używamy do generowania poleceń // aktualizacji SqlCommandBuilder sb = new SqlCommandBuilder(da); // (2) Dodawanie studenta do tabeli DataRow wiersz = tabela.newrow(); wiersz["nazwisko"] = "Koniecpolski"; wiersz["imie"] = "Krzysztof"; wiersz["data_ur ] = " ; Wiersz["plec ] = "M ; tabela.rows.add(drow); 22
23 // (3) Usuwanie wiersza z tabeli tabela.rows[4].delete(); // (4) Zmiana wartości kolumny tabela.rows[5]["data_ur"] = "1944": // (5) Aktualizacja oryginalnej tabeli w bazie (na serwerze) int updates = da.update(ds, "studenci"); MessageBox.Show("Zmienione wiersze: " + updates.tostring(); Jest kilka ograniczeń, o których trzeba pamiętać, korzystając z obiektu CommandBuilder. Polecenie Select powiązane z obiektem DataAdapter musi dotyczyć pojedynczej tabeli, a tabela źródłowa w bazie danych musi zawierać klucz główny lub kolumnę zawierającą niepowtarzalne wartości. Ta kolumna (lub kolumny) musi znaleźć się w oryginalnym poleceniu Select. 23
24 Zastosowanie obiektu DataAdapter upraszcza i automatyzuje proces aktualizacji bazy danych (dowolnego innego magazynu danych). Występują jednak problemy z aktualizacjami wielu użytkowników (współbieżne przetwarzanie transakcji). Model bezpołączeniowy wykorzystuje zasadę optymistycznej równoległości. Wiersze oryginalnego źródła danych nie są blokowane między odczytem a aktualizacją. W czasie tej przerwy inny użytkownik może zaktualizować źródło danych. Metoda Update() rozpoznaje, czy po ostatnim odczycie miały miejsce jakieś zmiany i nie aktualizuje zmienionych wierszy. Są dwie podstawowe techniki radzenia sobie z błędami przetwarzania równoległego, powstającymi przy zatwierdzaniu wielu aktualizacji. anulowanie wszystkich zmian w przypadku naruszenia zasad zatwierdzenie aktualizacji, które nie powodują błędów i wykrycie tych, które powodują, dzięki czemu można je ponownie przetworzyć. 24
25 Jeśli właściwość DataAdapter.ContinueUpdateOnError ma wartość false, to wówczas gdy aktualizacja wiersza nie jest możliwa, program zgłasza wyjątek. Zapobiega to wprowadzaniu kolejnych aktualizacji, ale nie wpływa na aktualizacje sprzed zgłoszenia wyjątku. Ponieważ aktualizacje mogą zależeć od siebie, aplikacje często wymagają zastosowania techniki "wszystko albo nic". Najłatwiejszy sposób na jej wdrożenie to utworzenie transakcji.net, w której wykonywane są wszystkie polecenia aktualizacji. W tym celu należy utworzyć obiekt SqlTransaction i przekazać do niego polecenie SqlDataAdapter.SelectCommand, co wiąże to polecenie z transakcją. Jeśli program zgłosi wyjątek, można użyć metody Rollback() do anulowania wszystkich zmian. Jeśli wszystkie operacje się powiodą, program wykona metodę Commit() zatwierdzającą wszystkie polecenia aktualizacji. 25
26 SqlDataAdapter da = new SqlDataAdapter(); SqlCommandBuilder sb = new SqlCommandBuilder(da); SqlConnection conn = new SqlConnection(connStr); conn.open (); // Trzeba otworzyć połączenie, aby użyć go do transakcji //(1) Tworzenie transakcji SqlTransaction tran = conn.begintransaction(); // (2) Wiązanie polecenia z transakcją da.selectcommand = new SqlCommand(sql, conn, tran); DataSet ds = new DataSet(); da.fill(ds, "studenci"); //Kod w poniższym fragmencie aktualizuje wiersze w DataSet try { int updates = da.update(ds, "studenci"); MessageBox.Show("Aktualizacje: " + updates.tostringo); } 26
27 //(3) Jeśli zostanie zgłoszony wyjątek, wszystkie aktualizacje // w transakcji zostaną anulowane catch (Exception ex) { MessageBox.Show(ex.Message); //Błąd w czasie aktualizacji } if (tran!= null) { tran. Rollback(); //Anuluje wszystkie aktualizacje } finally { tran = null; MessageBox.Show("Wszystkie aktualizacje anulowano."); // (4) Jeśli nie było błędów, wszystkie aktualizacje zostają // zatwierdzone if (tran!= null) { tran.commit(); } MessageBox.Show("Wszystkie aktualizacje zakończyły się powodzeniem."); tran = null; } conn.close(); 27
28 Jeżeli właściwość DataAdapter.ContinueUpdateOnError ma wartość true, przetwarzanie nie zatrzymuje się, jeśli nie można zaktualizować wiersza. Wtedy obiekt DataAdapter aktualizuje wszystkie wiersze, które nie powodują błędów. W tej sytuacji programista odpowiada za identyfikację problematycznych wierszy i określa, jak poradzić sobie z ich przetwarzaniem. Wiersze, których aktualizacja się nie powiodła, można łatwo zidentyfikować, posługując się właściwością DataRowState. Wiersze, których aktualizacja się nie powiodła, mają wartość Unchanged. Niezaktualizowane wiersze mają oryginalne wartości sprzed próby modyfikacji: Added, Deleted lub Modified. 28
29 // Obiekt da typu SqlDataAdapter ładuje tabelę studenci da.continueupdateonerror = true; DataSet ds = new DataSet(); try { da.fill(ds, "studenci"); } DataTable dt = ds.tables["studenci"]; SglCommandBuilder sb = new SqlCommandBuilder(da); //Przykładowe aktualizacje dt.rows[29].delete() ; //Usunięcie dt.rows[30]["data_ur"] = "1983"; //Aktualizacja dt.rows[30]["nazwisko"] = "King Kong"; //Aktualizacja dt.rows[31]["nazwisko"] = "Fantasia"; //Aktualizacja DataRow drow = dt.newrow(); drow["nazwisko"] = "Mann"; drow["imie ] = "Thomas ; drow["data_ur"] = " "; Drow["plec"] = "M"; dt.rows.add(drow); //Wstawianie 29
30 //Przesłanie aktualizacji int updates = da.update(ds, studenci"): //Poniższe wyrażenie przyjmuje wartość true, jeśli któraś z //aktualizacji się nie powiodła if (ds.haschanged()) { // Ładuje problematyczne wiersze do obiektu DataSet DataSet failures = ds.getchanges(); int rowsfailed = failures.tables[0].rows.count; Console.WriteLine("Nieudane aktualizacje: " + rowsfailed); foreach (DataRow r in failures.tables[0].rows) { string state = r.rowstate.tostring(); // Trzeba odrzucić zmiany, aby wyświetlić usunięty wiersz if (r.rowstate == DataRowState.Deleted) { r.rejectchanges(); } string ID = ((int)r["num_stud"]).tostring(); string msg = state + " ID filmu: " + ID; Console.WriteLine(msg); } } 30
31 Definiowanie powiązań między tabelami w obiekcie DataSet DataRelation to relacja tabela nadrzędna - tabela podrzędna między dwoma obiektami DataTable. Definiuje się ją na podstawie pasujących kolumn w obu tabelach. Kolumny muszą mieć ten sam typ danych (DataType), a kolumna w tabeli nadrzędnej musi zawierać niepowtarzalne wartości. Składnia konstruktora obiektu DataRelation wygląda następująco: public DataRelation (string nazwarelacji, DataColumn kolumnanadrzedna, DataColumn kolumnapodrzedna) Klasa DataSet ma właściwość Relations, która daje dostęp do kolekcji obiektów DataRelation zdefiniowanych dla tabel obiektu DataSet. Do umieszczania relacji w kolekcji służy metoda Relations.Add(). Przykład pokazany dalej zawiera kod, który ustanawia relację nadrzędna-podrzędna między tabelami studenci i rejestr, co pozwala na wyświetlenie listy kursów, na które zapisał się każdy ze studentów. 31
32 DataSet ds = new DataSet(); // (1) Zapełnianie tabeli kursami string sql = "SELECT * FROM Rejestr"; SąlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(); SqlDataAdapter da = new SqlDataAdapter(sql, conn); da.fill(ds, "rejestr"); // (2) Zapełnianie tabeli studentami sql = "SELECT num_stud, nazwisko, imie FROM studenci"; da.selectcommand.commandtext = sql; da.fill(ds, "studenci"); // (3) Definiowanie relacji między tabelami DataTable parent = ds.tables["studenci"]; DataTable child = ds.tables["rejestr"]; 32
33 DataRelation relation = new DataRelation("studenci_rejestr", parent.columns["num_stud"], child.columns["num_stud"]); // (4) Dodanie relacji do obiektu DataSet ds.relations.add(relation); // (5) Wyświetla wszystkich studentów i ich kursy foreach (DataRow r in parent.rows) { Console.WriteLine(r["nazwisko"] + r["imie ]); // Nazwisko i Imię studenta { } foreach (DataColumn rc in Console.WriteLine(" " + rc["kurs"]); r.getchildrows("studenci_rejestr")) } 33
34 Kiedy między dwiema tabelami zdefiniowana jest relacja, powoduje to dodanie więzów ForeignKeyConstraint do kolekcji Constraints podrzędnej tabeli DataTable. Określają one, jak zmiana lub usunięcie wierszy w tabeli nadrzędnej wpływa na tabelę podrzędną. Oznacza to, że po usunięciu wiersza w tabeli nadrzędnej wiersz w tabeli podrzędnej także może zostać usunięty lub jego klucz może przyjąć wartość null. W podobny sposób, jeśli w tabeli nadrzędnej zmianie ulegnie wartość klucza, wartość klucza wiersza w tabeli podrzędnej może ulec takiej samej zmianie lub może przyjąć wartość null. 34
35 Do określania obowiązujących zasad służą wartości właściwości DeleteRule i UpdateRule więzów. Mogą one przyjmować jedną z czterech wartości wyliczenia Rule: Cascade usuwa lub aktualizuje wiersze w tabeli podrzędnej. Jest to ustawienie domyślne. None nie powoduje żadnych zmian. SetDefault ustawia wartości kluczy w wierszach podrzędnych na domyślne wartości kolumny. SetNull ustawia wartości kluczy w wierszach podrzędnych na null. 35
36 // (1) Próba dodania do tabeli podrzędnej wiersza z // nowym kluczem DataRow row = child.newrow(); row[ num_stud"] = 999; child.rows.add (row); // Próba nieudana //Niepowodzenie 999 nie istnieje w tabeli nadrzędnej // (2) Usuwanie wiersza w tabeli nadrzędnej row = parent.rows[0]; row. Delete (); //Powoduje usunięcie wierszy w tabeli // o tym samym kluczu w tabeli podrzędnej // (3) Zwolnienie więzów i ponowna próba dodania wiersza ds.enforceconstraints = false; row[ num_stud"] = 999; child.rows.add(row); //Próba kończy się powodzeniem ds.enforceconstraints = true; //Ponowne włączenie więzów // (4) Zmiana działania więzów powodująca wstawianie // null po zmianie w tabeli nadrzędnej ((ForeignKeyConstraint)child.Constraints[0]).DeleteRule = Rule.SetNull; 36
37 Model połączeniowym czy bezpołączeniowy? Klasa DataReader pozwala na dostęp sekwencyjny w trybie tylko do odczytu. Przetwarzanie po jednym wierszu minimalizuje wymagania związane z pamięcią. Klasa DataSet umożliwia dostęp do danych do odczytu i do zapisu, ale wymaga wystarczającej ilości pamięci, aby pomieścić kopię danych pobranych ze źródła danych. Jeśli aplikacja nie wymaga aktualizowania źródła danych i służy jedynie do wyświetlania i wyboru danych, lepiej zastosować klasę DataReader. Jeśli aplikacja ma aktualizować dane, należy użyć klasy DataSet. Jeśli źródło danych zawiera dużą liczbę rekordów, obiekt DataSet może wymagać zbyt wielu zasobów. Jeśli dane wymagają niewielkiej liczby zmian, lepiej wykorzystać obiekty DataReader i Command do wykonywania aktualizacji. 37
38 Klasa DataSet stanowi dobry wybór w następujących sytuacjach: Dane są serializowane lub przesyłane przez łącza za pomocą HTTP. Formularz zawiera wiele powiązanych ze źródłem danych kontrolek tylko do odczytu. Kontrolki formularza, jak GridView lub DataView, są powiązane ze źródłem danych, które można aktualizować. Aplikacja musi zmieniać, dodawać lub usuwać wiersze danych. 38
39 Klasę DataReader lepiej stosować wtedy gdy: - Potrzebna jest obsługa dużej liczby rekordów, przez co wymagania związane z pamięcią i długi czas ładowania powodują, że klasa DataSet jest nieprzydatna. - Dane są tylko do odczytu i są powiązane z kontrolką listy formularza Windows lub Web. - Baza danych podlega częstym zmianom, przez co zawartość obiektu DataSet wymagałaby częstych aktualizacji. 39
Bazy danych 2. Wykład 6
Wykład 6 ADO model bezpołączeniowy Klasa DataSet kolekcja DataTable Obiekty DataColumn Obiekty DataRow Aktualizacja bazy za pomocą obiektu DataAdapter Definiowanie powiązań między tabelami w obiekcie DataSet
Bardziej szczegółowoArchitektura ADO.NET Dostawcy danych Modele dostępu do danych model połączeniowy Model bezpołączeniowy
Architektura ADO.NET Dostawcy danych Modele dostępu do danych model połączeniowy Model bezpołączeniowy 2015-12-18 1 Języki i paradygmaty - 9 Architektura ADO.NET - zestaw abstrakcyjnych klas, które udostępniają
Bardziej szczegółowoWykład 4. Architektura ADO.NET Dostawcy danych Modele dostępu do danych model połączeniowy Model bezpołączeniowy. Bazy danych 2
Wykład 4 Architektura ADO.NET Dostawcy danych Modele dostępu do danych model połączeniowy Model bezpołączeniowy 2017-02-24 Bazy danych 2 W4 1 Architektura ADO.NET (Active Data Objects) Zestaw abstrakcyjnych
Bardziej szczegółowoPlatforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact
Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013 Prowadzący: mgr inż. Tomasz Jaworski Strona WWW: http://tjaworski.kis.p.lodz.pl/ Visual Basic.NET dostęp do bazy danych Baza Microsoft SQL Server Compact
Bardziej szczegółowoProgramowanie w MS Visual Studio 2005 z wykorzystaniem MS SQL Server 2005
Programowanie w MS Visual Studio 2005 z wykorzystaniem MS SQL Server 2005 Lekcja 3 Zapisywanie i anulowanie zmian wprowadzonych w DataGridView do pliku z Bazą Danych. Formatowanie DataGridView. Wymagania:
Bardziej szczegółowoWykład 10 Architektura ADO.NET Dostawcy danych Modele dostępu do danych model połączeniowy Model bezpołączeniowy
Wykład 10 Architektura ADO.NET Dostawcy danych Modele dostępu do danych model połączeniowy Model bezpołączeniowy 1 Architektura ADO.NET - zestaw abstrakcyjnych klas, które udostępniają dane z poziomu środowiska.net
Bardziej szczegółowoZAPOZNANIE SIĘ ZE SPOSOBEM PRZECHOWYWANIA
LABORATORIUM SYSTEMÓW MOBILNYCH ZAPOZNANIE SIĘ ZE SPOSOBEM PRZECHOWYWANIA DANYCH NA URZĄDZENIACH MOBILNYCH I. Temat ćwiczenia II. Wymagania Podstawowe wiadomości z zakresu obsługi baz danych i języka SQL
Bardziej szczegółowoProjektowanie aplikacji z bazami danych
ADO.NET Instytut Informatyki Uniwersytet Wrocławski Plan wykładu Wprowadzenie Nawiązywanie połączenia Wykonywanie kwerend Przeglądanie wyniku zapytania Parametryzacja kwerend Obiekty DataSet, DataTable,
Bardziej szczegółowoPlan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza
4 Budowa prostych formularzy, stany sesji, tworzenie przycisków Plan Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 2 Formularz i jego typy Tworzenie formularza
Bardziej szczegółowoPHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:
PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł mysqli ma dwa interfejsy: proceduralny i obiektowy) PostgreSQL Oracle MS
Bardziej szczegółowoADO.NET. Obiektowy dostęp do danych. Przygotował Jakub Światły
ADO.NET Obiektowy dostęp do danych Przygotował Jakub Światły Plan prezentacji Technologie dostępu do danych Cele i założenia ADO.NET Praca na danych podłączonych Praca na danych odłączonych Synchronizacja
Bardziej szczegółowo1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1
1 LINQ 1 1. Cel zajęć Celem zajęć jest zapoznanie się z technologią LINQ oraz tworzeniem trójwarstwowej aplikacji internetowej. 2. Zadanie Proszę przygotować aplikację WWW, która: będzie pozwalała na generowanie
Bardziej szczegółowoAutor: Joanna Karwowska
Autor: Joanna Karwowska Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z dużej ilości danych zapisanych na serwerze jest współpraca z relacyjną bazą danych. 2 1. Utworzyć bazę danych.
Bardziej szczegółowoz użyciem kontrolek ASP.NET
Wydział Informatyki i Zarządzaniaą Wyświetlanie informacji z baz danych z użyciem kontrolek ASP.NET Rafał Boborycki Zaawansowane Programowanie Internetowych SI Plan prezentacji ASP.Net i ADO.Net. Tryby
Bardziej szczegółowoProgramowanie w MS Visual Studio 2005 z wykorzystaniem MS SQL Server 2005
Programowanie w MS Visual Studio 2005 z wykorzystaniem MS SQL Server 2005 Lekcja 4 Multizaznaczanie programowe Używanie filtrów (ukrywanie kolumn i wierszy) Zapisywanie danych z DataSet do pliku *.XML
Bardziej szczegółowoProjekt Hurtownia, realizacja rejestracji dostaw produktów
Projekt Hurtownia, realizacja rejestracji dostaw produktów Ćwiczenie to będzie poświęcone zaprojektowaniu formularza pozwalającego na rejestrację dostaw produktów dla naszej hurtowni. Dane identyfikujące
Bardziej szczegółowoLaboratorium nr 4. Temat: SQL część II. Polecenia DML
Laboratorium nr 4 Temat: SQL część II Polecenia DML DML DML (Data Manipulation Language) słuŝy do wykonywania operacji na danych do ich umieszczania w bazie, kasowania, przeglądania, zmiany. NajwaŜniejsze
Bardziej szczegółowoJęzyk SQL. Rozdział 9. Język definiowania danych DDL, część 2.
Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Ograniczenia integralnościowe, modyfikowanie struktury relacji, zarządzanie ograniczeniami. 1 Ograniczenia integralnościowe Służą do weryfikacji
Bardziej szczegółowoBudowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości
Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości część 2 Zaprojektowaliśmy stronę dodaj_dzial.aspx proszę jednak spróbować dodać nowy dział nie podając jego nazwy
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych
Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,
Bardziej szczegółowoKurs programowania aplikacji bazodanowych
Wykład 3 Instytut Informatyki Uniwersytet Wrocławski Plan wykładu.net Data Providers Nawiązywanie połączenia Wykonywanie kwerend Przeglądanie wyniku zapytania Parametryzacja kwerend Obiekty DataSet, DataTable,
Bardziej szczegółowoProjektowanie aplikacji bazodanowych w.net
Wykład 1 Instytut Informatyki Uniwersytet Wrocławski Plan wykładu Wprowadzenie do ADO.NET Nawiązywanie połączenia Wykonywanie kwerend Przeglądanie wyniku zapytania Parametryzacja kwerend Obiekty DataSet,
Bardziej szczegółowoProjekt Hurtownia, realizacja rejestracji dostaw produktów
Projekt Hurtownia, realizacja rejestracji dostaw produktów Ćwiczenie to będzie poświęcone zaprojektowaniu formularza pozwalającego na rejestrację dostaw produktów dla naszej hurtowni. Dane identyfikujące
Bardziej szczegółowoPodstawy technologii WWW
Podstawy technologii WWW Ćwiczenie 11 PHP, MySQL: więcej, więcej!, więcej!!. tabel i funkcjonalności. Na dzisiejszych zajęciach zdefiniujemy w naszej bazie kilka tabel powiązanych kluczem obcym i zobaczymy,
Bardziej szczegółowoSystem zarządzania firmą specyfikacja techniczna.
System zarządzania firmą specyfikacja techniczna. 1. Zakres funkcjonalności Funkcjonalność aplikacji została podzielona na 3 grupy: Zbiór podstawowych danych dane kontrahentów, typy dokumentów, magazynów,
Bardziej szczegółowoWykład 12. Programowanie serwera MS SQL 2005 w C#
Wykład 12 Programowanie serwera MS SQL 2005 w C# Budowa procedur składowanych w C# Budowa funkcji składowanych w C# Wykorzystanie funkcji składowanych w C# po stronie klienta Tworzenie typów definiowanych
Bardziej szczegółowoPHP: bazy danych, SQL, AJAX i JSON
1 PHP: bazy danych, SQL, AJAX i JSON SYSTEMY SIECIOWE Michał Simiński 2 Bazy danych Co to jest MySQL? Jak się połączyć z bazą danych MySQL? Podstawowe operacje na bazie danych Kilka dodatkowych operacji
Bardziej szczegółowoMetody dostępu do danych
Metody dostępu do danych dr inż. Grzegorz Michalski Na podstawie materiałów dra inż. Juliusza Mikody Jak działa JDO Podstawowym zadaniem JDO jest umożliwienie aplikacjom Javy transparentnego umieszczenia
Bardziej szczegółowoWykład 8. SQL praca z tabelami 5
Wykład 8 SQL praca z tabelami 5 Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu
Bardziej szczegółowoJęzyki programowania wysokiego poziomu. PHP cz.4. Bazy danych
Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł
Bardziej szczegółowoObiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody
Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,
Bardziej szczegółowoPodstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko
Podstawowe pojęcia dotyczące relacyjnych baz danych mgr inż. Krzysztof Szałajko Czym jest baza danych? Co rozumiemy przez dane? Czym jest system zarządzania bazą danych? 2 / 25 Baza danych Baza danych
Bardziej szczegółowoBaza danych sql. 1. Wprowadzenie
Baza danych sql 1. Wprowadzenie Do tej pory operowaliście na listach. W tej instrukcji pokazane zostanie jak stworzyć bazę danych. W zadaniu skorzystamy z edytora graficznego struktury bazy danych, który
Bardziej szczegółowokoledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,
Celem ćwiczeń jest zaprojektowanie oraz utworzenie na serwerze bazy danych przechowującej informacje na temat danych kontaktowych. Celem jest również zapoznanie z podstawowymi zapytaniami języka SQL służącymi
Bardziej szczegółowoOracle PL/SQL. Paweł Rajba.
Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 2 Kusory Wprowadzenie Kursory użytkownika Kursory domyślne Zmienne kursora Wyrażenia kursora - 2 - Wprowadzenie Co to jest kursor?
Bardziej szczegółowoOracle11g: Wprowadzenie do SQL
Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom
Bardziej szczegółowoLaboratorium Technologii Informacyjnych. Projektowanie Baz Danych
Laboratorium Technologii Informacyjnych Projektowanie Baz Danych Komputerowe bazy danych są obecne podstawowym narzędziem służącym przechowywaniu, przetwarzaniu i analizie danych. Gromadzone są dane w
Bardziej szczegółowoSmarty PHP. Leksykon kieszonkowy
IDZ DO PRZYK ADOWY ROZDZIA SPIS TREœCI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG Smarty PHP. Leksykon kieszonkowy Autor: Daniel Bargie³ ISBN: 83-246-0676-9 Format: B6, stron: 112 TWÓJ KOSZYK
Bardziej szczegółowoUstawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).
POZIOMY IZOLACJI TRANSAKCJI 1. Microsoft SQL Server 2012 (od SQL Server 2005) W systemie SQL Server można wybrać sposób sterowania współbieżnością. Podstawowy sposób to stosowanie blokad. Wykorzystywane
Bardziej szczegółowoProjekt Hurtownia, realizacja skojarzeń dostawców i produktów
niżej. Projekt Hurtownia, realizacja skojarzeń dostawców i produktów W bazie danych HurtowniaSP istnieją tabele Dostawcy oraz Produkty, ich definicje przypomniane są W bazie zdefiniowano także tabelę DostawcyProdukty,
Bardziej szczegółowoSprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.
Za operacje na bazie odpowiada biblioteka mysqli (i jak improved). Posiada ona interfejs obiektowy jak i proceduralny. Podłączenie do bazy (obiektowo) mysqli:: construct() ([ string $host [, string $username
Bardziej szczegółowoPodręcznik użytkownika produktu WebSphere Adapter for Oracle E-Business Suite Wersja 7, wydanie 0, pakiet składników Feature Pack 2
WebSphere Produkty Adapter Wersja 7 Wydanie 0 Feature Pack 2 Podręcznik użytkownika produktu WebSphere Adapter for Oracle E-Business Suite Wersja 7, wydanie 0, pakiet składników Feature Pack 2 WebSphere
Bardziej szczegółowoTabela wewnętrzna - definicja
ABAP/4 Tabela wewnętrzna - definicja Temporalna tabela przechowywana w pamięci operacyjnej serwera aplikacji Tworzona, wypełniana i modyfikowana jest przez program podczas jego wykonywania i usuwana, gdy
Bardziej szczegółowoImię i Nazwisko Data Ocena. Laboratorium 7
Imię i Nazwisko Data Ocena Laboratorium 7 Celem tego ćwiczenia jest pokazanie, że w MoscowML można pisać aplikacje użytkowe, np. prosty interpreter języka SQL (MLSQL) Listy i krotki Różnica pomiędzy krotkami
Bardziej szczegółowoProgramowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika
Programowanie w SQL procedury i funkcje UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika 1. Funkcje o wartościach skalarnych ang. scalar valued
Bardziej szczegółowoWprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa
Wprowadzenie do projektowania i wykorzystania baz danych Katarzyna Klessa POWTÓRKA Z PIERWSZYCH ZAJĘĆ Lista słówek - do zapamiętania na początek Z podstaw SQL: CREATE - Tworzenie tabeli, czyli Coś czego
Bardziej szczegółowoMicrosoft.NET: LINQ to SQL, ASP.NET AJAX
Microsoft.NET: LINQ to SQL, ASP.NET AJAX Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2008 oraz serwer bazy danych SQL Server Express 2005 (lub
Bardziej szczegółowoInstytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Laboratorium 1 Wprowadzenie, podstawowe informacje o obsłudze
Bardziej szczegółowoKwerenda. parametryczna, z polem wyliczeniowym, krzyżowa
Kwerenda parametryczna, z polem wyliczeniowym, krzyżowa Operatory stosowane w wyrażeniach pól wyliczeniowych Przykład: wyliczanie wartości w kwerendach W tabeli Pracownicy zapisano wartości stawki godzinowej
Bardziej szczegółowoPaweł Rajba
Paweł Rajba pawel@cs.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Używanie kursorów Rodzaje kursorów Praca z kursorami Co to jest kursor? Cykl życia kursora utworzenie pobieranie wartości ewentualnie
Bardziej szczegółowoPierwsza niedogodność dotyczy strony zarządzaj działami.
Zaprojektowana aplikacja umożliwia wprawdzie pełne zarządzanie danymi w bazie jednak w pewnych przypadkach funkcjonalność wykonywania operacji bazodanowych może nie być zadawalająca. Pierwsza niedogodność
Bardziej szczegółowoBudowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych
Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych widok ankiety w przeglądarce Rozpoczniemy od zaprojektowania bazy danych w programie SYBASE/PowerDesigner umieszczamy
Bardziej szczegółowoAdministracja i programowanie pod Microsoft SQL Server 2000
Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 5 Kursory w SQL Serverze Wprowadzenie Modele kursorów Używanie kursorów Rodzaje kursorów Praca
Bardziej szczegółowoLK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika
LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika Prowadzący: Dr inż. Jacek Habel Instytut Technologii Maszyn i Automatyzacji Produkcji Zakład Projektowania Procesów
Bardziej szczegółowoLaboratorium 7 Blog: dodawanie i edycja wpisów
Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą
Bardziej szczegółowoInstytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie bazy danych z użyciem UML, proste
Bardziej szczegółowoBlaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik
Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie
Bardziej szczegółowoInstytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl fb.com/groups/bazydanychmt/ Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie
Bardziej szczegółowoOracle PL/SQL. Paweł Rajba.
Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -
Bardziej szczegółowoProjektowanie i programowanie aplikacji biznesowych. Wykład 2
Projektowanie i programowanie aplikacji biznesowych Wykład 2 Kontrolki w Windows API Aby korzystać z kontrolek należy dołączyć plik nagłówkowy o nazwie commctrl.h oraz bibliotekę o nazwie libcomctl32.a.
Bardziej szczegółowo6. Formularze tabelaryczne, obiekty nawigacji - rozgałęzienia
6. Formularze tabelaryczne, obiekty nawigacji - rozgałęzienia 1. Kolejne zadanie będzie polegało na utworzeniu formularza tabelarycznego prezentującego utwory określonego wykonawcy. Formularz utworzymy
Bardziej szczegółowoBudowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych
Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych widok ankiety w przeglądarce Rozpoczniemy od zaprojektowania bazy danych w programie SYBASE/PowerDesigner umieszczamy
Bardziej szczegółowoD D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?
D D L S Q L Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L - p o d s t a w y DDL SQL (Data Definition Language) Jest to zbiór instrukcji i definicji danych, którym posługujemy się
Bardziej szczegółowoWprowadzenie do projektowania i wykorzystania baz danych Relacje
Wprowadzenie do projektowania i wykorzystania baz danych Relacje Katarzyna Klessa Dygresja nt. operatorów SELECT 2^2 SELECT 2^30 SELECT 50^50 2 Dygresja nt. operatorów SELECT 2^30 --Bitwise exclusive OR
Bardziej szczegółowoakademia androida Składowanie danych część VI
akademia androida Składowanie danych część VI agenda 1. SharedPreferences. 2. Pamięć wewnętrzna i karta SD. 3. Pliki w katalogach /res/raw i /res/xml. 4. Baza danych SQLite. 5. Zadanie. 1. SharedPreferences.
Bardziej szczegółowoSQL (ang. Structured Query Language)
SQL (ang. Structured Query Language) SELECT pobranie danych z bazy, INSERT umieszczenie danych w bazie, UPDATE zmiana danych, DELETE usunięcie danych z bazy. Rozkaz INSERT Rozkaz insert dodaje nowe wiersze
Bardziej szczegółowoSzablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Bardziej szczegółowoBudowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości
Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości Rozpoczniemy od zaprojektowania bazy danych w programie SYBASE/PowerDesigner umieszczamy dwie Encje (tabele) prawym
Bardziej szczegółowoProjektowanie systemów baz danych
Projektowanie systemów baz danych Seweryn Dobrzelewski 4. Projektowanie DBMS 1 SQL SQL (ang. Structured Query Language) Język SQL jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do
Bardziej szczegółowoE.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze
Funkcje użytkownika Tworzenie funkcji Usuwanie funkcji Procedury składowane Tworzenie procedur składowanych Usuwanie procedur składowanych Wyzwalacze Wyzwalacze a ograniczenia i procedury składowane Tworzenie
Bardziej szczegółowoInstytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl fb.com/groups/bazydanychmt/ Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 4 (Asocjacje,
Bardziej szczegółowoPrzewodnik Szybki start
Przewodnik Szybki start Program Microsoft Access 2013 wygląda inaczej niż wcześniejsze wersje, dlatego przygotowaliśmy ten przewodnik, aby skrócić czas nauki jego obsługi. Zmienianie rozmiaru ekranu lub
Bardziej szczegółowoBazy danych Access KWERENDY
Bazy danych Access KWERENDY Obiekty baz danych Access tabele kwerendy (zapytania) formularze raporty makra moduły System baz danych MS Access Tabela Kwerenda Formularz Raport Makro Moduł Wyszukiwanie danych
Bardziej szczegółowoWykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik
Wizualne systemy programowania Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Kolekcje List
Bardziej szczegółowoPRZESTRZENNE BAZY DANYCH WYKŁAD 2
PRZESTRZENNE BAZY DANYCH WYKŁAD 2 Baza danych to zbiór plików, które fizycznie przechowują dane oraz system, który nimi zarządza (DBMS, ang. Database Management System). Zadaniem DBMS jest prawidłowe przechowywanie
Bardziej szczegółowoInstytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie bazy danych z użyciem UML, proste
Bardziej szczegółowoProgramowanie MorphX Ax
Administrowanie Czym jest system ERP? do systemu Dynamics Ax Obsługa systemu Dynamics Ax Wyszukiwanie informacji, filtrowanie, sortowanie rekordów IntelliMorph : ukrywanie i pokazywanie ukrytych kolumn
Bardziej szczegółowoTRX API opis funkcji interfejsu
TRX Krzysztof Kryński Cyfrowe rejestratory rozmów seria KSRC TRX API opis funkcji interfejsu Kwiecień 2013 Copyright TRX TRX ul. Garibaldiego 4 04-078 Warszawa Tel. 22 871 33 33 Fax 22 871 57 30 www.trx.com.pl
Bardziej szczegółowoSystem imed24 Instrukcja Moduł Analizy i raporty
System imed24 Instrukcja Moduł Analizy i raporty Instrukcja obowiązująca do wersji 1.8.0 Spis treści 1. Moduł Analizy i Raporty... 3 1.1. Okno główne modułu Analizy i raporty... 3 1.1.1. Lista szablonów
Bardziej szczegółowoBazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI
Bazy danych Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI Wszechnica Poranna Trzy tematy: 1. Bazy danych - jak je ugryźć? 2. Język SQL podstawy zapytań. 3. Mechanizmy wewnętrzne baz danych czyli co
Bardziej szczegółowoPODSTAWOWE POJĘCIA BAZ DANYCH
Baza danych (data base) - uporządkowany zbiór danych o określonej strukturze, przechowywany na nośniku informacji w komputerze. System bazy danych można zdefiniować jako bazę danych wraz z oprogramowaniem
Bardziej szczegółowoAktualizacja SMSFall v. 1.1.5 Data publikacji: 20-05-2013
Aktualizacja SMSFall v. 1.1.5 Data publikacji: 20-05-2013 Wersja Standard i Plus: we właściwościach terminala dodano wskaźnik poziomu sygnału urządzenia GSM wyrażony w dbm. Podstawa teoretyczna: http://pl.wikipedia.org/wiki/dbm.
Bardziej szczegółowoNowe funkcje w programie Forte Finanse i Księgowość
Forte Finanse i Księgowość 1 / 11 Nowe funkcje w programie Forte Finanse i Księgowość Spis treści : Korzyści z zakupu nowej wersji 2 Forte Finanse i Księgowość w wersji 2011.b 3 Nowe wzory deklaracji VAT
Bardziej szczegółowoTworzenie projektu bazy danych z kreatorem odnośników - Filmoteka. Projekt tabel dla bazy Filmoteka
Tworzenie projektu bazy danych z kreatorem odnośników - Filmoteka Projekt tabel dla bazy Filmoteka Kolejność tworzenia tabel w bazie nie jest dowolna jako pierwsze należy utworzyć tabele słownikowe, potem
Bardziej szczegółowoJoyce Cox Joan Lambert. Microsoft Access. 2013 Krok po kroku. Przekład: Jakub Niedźwiedź
Joyce Cox Joan Lambert Microsoft Access 2013 Krok po kroku Przekład: Jakub Niedźwiedź APN Promise, Warszawa 2013 Spis treści Wprowadzenie................................................................vii
Bardziej szczegółowoWprowadzenie do Doctrine ORM
Wprowadzenie do Doctrine ORM Przygotowanie środowiska Do wykonania ćwiczenia konieczne będzie zainstalowanie narzędzia Composer i odpowiednie skonfigurowanie Netbeans (Tools->Options->Framework & Tools->Composer,
Bardziej szczegółowoCele. Definiowanie wyzwalaczy
WYZWALACZE Definiowanie wyzwalaczy Cele Wyjaśnić cel istnienia wyzwalaczy Przedyskutować zalety wyzwalaczy Wymienić i opisać cztery typy wyzwalaczy wspieranych przez Adaptive Server Anywhere Opisać dwa
Bardziej szczegółowoProgramowanie w języku Java. Bazy danych SQLite w Javie
Programowanie w języku Java Bazy danych SQLite w Javie Co to jest SQLite SQLite to bezserwerowa, nie wymagająca konfiguracji relacyjna baza danych. Znajduje szerokie zastosowanie np.. w systemie android
Bardziej szczegółowoRozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC.
1 Moduł OPC Moduł OPC pozwala na komunikację z serwerami OPC pracującymi w oparciu o model DA (Data Access). Dzięki niemu można odczytać stan obiektów OPC (zmiennych zdefiniowanych w programie PLC), a
Bardziej szczegółowoSystemy GIS Tworzenie zapytań w bazach danych
Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE
Bardziej szczegółowoGenerowanie dokumentów XML z tabel relacyjnych - funkcje SQLX
Aktualizowanie dokumentów XML ( Oracle ) do aktualizowania zawartości dokumentów XML służy między innymi funkcja updatexml. wynikiem jej działania jest oryginalny dokument ze zmodyfikowanym fragmentem,
Bardziej szczegółowoLABORATORIUM 8,9: BAZA DANYCH MS-ACCESS
UNIWERSYTET ZIELONOGÓRSKI INSTYTUT INFORMATYKI I ELEKTROTECHNIKI ZAKŁAD INŻYNIERII KOMPUTEROWEJ Przygotowali: mgr inż. Arkadiusz Bukowiec mgr inż. Remigiusz Wiśniewski LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS
Bardziej szczegółowo1. Opis ogólny. 2. Opis techniczny. 3. Wymagania techniczne
Dokumentacja programu e Zoz Opis biblioteki PhantomAPI.dll Wersja 1.22.1.5 Zielona Góra 2010-08-26 1. Opis ogólny Biblioteka programistyczna PhantomAPI.dll służy do integracji oprogramowania zewnętrznego
Bardziej szczegółowoInstrukcja obsługi aplikacji MobileRaks 1.0
Instrukcja obsługi aplikacji MobileRaks 1.0 str. 1 Pierwsze uruchomienie aplikacji. Podczas pierwszego uruchomienia aplikacji należy skonfigurować połączenie z serwerem synchronizacji. Należy podać numer
Bardziej szczegółowoBackend Administratora
Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona
Bardziej szczegółowoMonitoring procesów z wykorzystaniem systemu ADONIS. Krok po kroku
z wykorzystaniem systemu ADONIS Krok po kroku BOC Information Technologies Consulting Sp. z o.o. e-mail: boc@boc-pl.com Tel.: (+48 22) 628 00 15, 696 69 26 Fax: (+48 22) 621 66 88 BOC Management Office
Bardziej szczegółowoBazy Danych i Usługi Sieciowe
Bazy Danych i Usługi Sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2011 1 / 15 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_Danych_i_Usługi_Sieciowe_-_2011z
Bardziej szczegółowoT-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15
T-SQL dla każdego / Alison Balter. Gliwice, cop. 2016 Spis treści O autorce 11 Dedykacja 12 Podziękowania 12 Wstęp 15 Godzina 1. Bazy danych podstawowe informacje 17 Czym jest baza danych? 17 Czym jest
Bardziej szczegółowoDECLARE VARIABLE zmienna1 typ danych; BEGIN
Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;
Bardziej szczegółowo