Zapisywanie danych w zestawach danych
Zapisywanie danych jest proces utrwalanie zmianie danych w aplikacji do oryginalnego magazynu danych, zwykle relacyjnej bazy danych, takich jak SQL Server.
Ponieważ dataset jest skutecznie pamięci podręcznej — w pamięci kopię — danych, proces zapisywania informacji do oryginalnego źródła danych jest oddzielone od proces modyfikowania danych w zestawie danych.Można wysłać zaktualizowane dane w zestawach danych do bazy danych, wywołując jedną z Update metod TableAdapter lub wywołując metody DBDirect TableAdapter.
Aby uzyskać więcej informacji dotyczących wysyłania zmiany w zestawie danych do bazy danych, zobacz Jak: aktualizuje dane za pomocą TableAdapter i Jak: Zapisz zmiany zestawu danych do bazy danych.
Visual Studio zawiera TableAdapterManager składnika, który pomaga w wykonywaniu zapisuje podczas zapisywania danych w tabelach pokrewnych.Ten składnik zapewnia, że zapisywane są wykonywane w prawidłowej kolejności na podstawie ograniczeń klucza obcego, zdefiniowane w bazie danych.Aby uzyskać więcej informacji, zobacz Hierarchiczny przegląd aktualizacji.
Informacje na temat modyfikowania danych w zestawie danych, zobacz Edytowanie danych w aplikacji.
Aktualizacje dwuetapowe
Aktualizowanie źródła danych za pomocą zestawu danych jest procesem dwuetapowym.Pierwszym krokiem jest aktualizacja zestawu danych przy użyciu nowych informacji — nowe rekordy, rekordy zmienione lub usunięte rekordy.Jeśli aplikacja dotyczy jedynie zestawu danych — na przykład po aktualizacji zestawu danych, można go wysłać innej aplikacji, która będzie wykonać dalsze przetwarzanie zestawu danych — a następnie po zakończeniu aktualizacji.
[!UWAGA]
W Windows Forms architektury powiązanie danych zajmuje się wysyłanie zmian z formantów powiązanych danych do zestawu danych i nie trzeba jawnie aktualizacji zestawu danych z własnego kodu.Aby uzyskać więcej informacji, zobacz Powiązanie danych Windows Forms.
Jeśli aktualizujesz źródła danych (np. bazy danych), drugim krokiem jest wysyłanie zmian z zestawu danych do oryginalnego źródła danych.Oznacza to, że proces aktualizowania dataset nie również zapisywać zmiany poprzez podstawowego źródła danych; jawnie musi wykonać ten krok drugi.Użytkownik zazwyczaj to osiągnąć, wywołując metodę aktualizacji samego TableAdapter (lub karta danych), używany do wypełnienia obiektu dataset, chociaż różne karty, na przykład, można użyć również przenieść dane z jednego źródła danych do innego lub aktualizacji wielu źródeł danych.
Proces dwuetapowej aktualizacji i roli DataRowVersion w skutecznej aktualizacji
Strukturalnie dataset udostępnia dane jako zestawy zbiorów.Zestawów danych zawierają kolekcje tabel.Tabele zawierają kolekcji wierszy.Tabele są udostępniane jako kolekcja DataSet obiektu i rekordy są dostępne w Rows kolekcji DataTable obiektów.Wprowadzanie zmian do danych w zestawie manipulując polecenie tych zbiorów danych możliwe jest przy użyciu metody podstawowej kolekcji, ale jeśli zamierzasz zaktualizować źródła danych należy użyć metody specjalnie do modyfikacji zestawu danych.
Na przykład, aby usunąć rekord z tabeli danych, należy wywołać Metoda RemoveAt z tabeli Rows kolekcji, która fizycznie Usuwa rekord z zestawu danych.Jeśli użycie obiektu dataset tylko jako strukturalnego magazynu danych i nie są o przekazywanie informacji o zmianach do innej aplikacji, manipulowania kolekcje w ten sposób jest akceptowany sposób aktualizowania dataset.
Jednakże jeżeli zamierzasz wysłać zmiany źródła danych lub innej aplikacji, należy zachować zmiany informacji (czyli metadane) o każdej aktualizacji.Później po wysłaniu zmian do źródła danych lub aplikacji proces ma informacje potrzebne do zlokalizowania i aktualizować odpowiednie rekordy.Na przykład usunięcie rekordu w zestawie danych, informacje o usuniętych rekordów ma być utrzymywane w zestawie danych.W ten sposób, gdy DeleteCommand z TableAdapter jest wywoływana, brak jest wystarczających informacji historycznych, aby zlokalizować oryginalny rekord w źródle danych, może zostać usunięty.Aby uzyskać więcej informacji zobacz "Utrzymywania informacji dotyczących zmiany" poniżej.
Scalanie danych
Można aktualizować zawartość dataset przez Scalanie — czyli przez skopiowanie zawartości jednego zestawu danych (określone jako źródło dataset) do wywoływania dataset (określone jako docelowej dataset).Podczas scalania danych DataSet docelowego są dodawane nowe rekordy w zestawie danych źródłowych.Ponadto dodatkowe kolumny w zestawie źródła danych są dodawane do zestawu docelowego danych.Scalanie danych jest szczególnie użyteczne, gdy mają lokalnego obiektu dataset i uzyskać drugiego zestawu danych z innej aplikacji lub składnik usługi XML sieci Web.Jest również przydatne, gdy trzeba integrowania danych z wielu zestawów danych.
Scalanie danych, można również przekazać, opcjonalny argument logiczna (preserveChanges) informuje, że Merge metody czy zachować istniejące modyfikacje w docelowym zestawie danych.Ponieważ zestawów danych utrzymania wielu wersji rekordów, należy pamiętać, że więcej niż jedną wersję rekordów jest scalany.Następująca tabela ilustruje rekordu w dwóch zbiorów danych, które zostaną scalone:
DataRowVersion |
Docelowy element dataset. |
Źródła danych |
---|---|---|
Oryginalny |
James Wilson |
James C.Wilson |
Bieżące |
Jim Wilson |
James C.Wilson |
Wywołanie Merge metody w powyższej tabeli, z preserveChanges=false targetDataset.Merge(sourceDataset) powoduje następujące:
DataRowVersion |
Docelowy element dataset. |
Źródła danych |
---|---|---|
Oryginalny |
James C.Wilson |
James C.Wilson |
Bieżące |
James C.Wilson |
James C.Wilson |
Wywołanie Merge metody z preserveChanges = true targetDataset.Merge(sourceDataset, true) powoduje następujące:
DataRowVersion |
Docelowy element dataset. |
Źródła danych |
---|---|---|
Oryginalny |
James C.Wilson |
James C.Wilson |
Bieżące |
Jim Wilson |
James C.Wilson |
Przestroga |
---|
W preserveChanges = true scenariusza, jeśli RejectChanges wywoływana jest metoda rekordu w zestawie danych docelowych, a następnie powróci do oryginalnych danych z źródło dataset.Oznacza to, że podczas próby aktualizacji oryginalnego źródła danych z zestawu docelowego danych, to nie można odnaleźć oryginalnego wiersza do aktualizacji.Jednak wypełniając zaktualizowane rekordy ze źródła danych innego elementu dataset zapobieganie Naruszenie współbieżności i następnie seryjnej zapobiega Naruszenie współbieżności.(Naruszenie współbieżności występuje, gdy inny użytkownik modyfikuje rekordu w źródle danych po wypełnił dataset.) |
Ograniczenia aktualizacji
Aby wprowadzić zmiany do istniejącego wiersza danych, dodawanie lub aktualizacji danych w poszczególnych kolumn.Jeśli zestaw danych zawiera ograniczenia (np. klucze obce lub ograniczenia nullable), jest możliwe, że podczas aktualizacji rekordu — po zakończeniu aktualizacji jednej kolumny, ale przed przejść do następnego — rekord tymczasowo może być w stanie błędu.
Aby zapobiec naruszeniom przedwczesne ograniczenie może tymczasowo zawiesić ograniczenia aktualizacji.To służy dwóm celom:
Błąd uniemożliwia są generowane podczas aktualizacji jednej kolumny przed get do innej kolumny.
Wstrzymuje aktualizacja niektórych zdarzeń jest uruchamiany (zdarzenia, które są często używane do sprawdzania poprawności).
Po zakończeniu aktualizacji można ponownie włączyć sprawdzanie ograniczenia, które również ponownie włącza zdarzenia aktualizacji i podnosi ich.
[!UWAGA]
W Windows Forms architektury powiązanie danych wbudowane w datagrid zawiesza ograniczenie sprawdzania aż fokusu z wiersza i nie trzeba jawnie wywołać BeginEdit, EndEdit lub CancelEdit metody.
Ograniczenia są automatycznie wyłączane, gdy Merge wywoływana jest metoda na dataset.Po zakończeniu scalania, jeśli istnieją ograniczenia na zestaw danych nie może być włączone, a następnie ConstraintException jest generowany.W tej sytuacji EnforceConstraints właściwość jest ustawiona na false i naruszanie ograniczenia muszą być rozwiązane przed zresetowaniem EnforceConstraints właściwość, aby true.
Po zakończeniu aktualizacji można ponownie włączyć sprawdzanie ograniczenia, które również ponownie włącza zdarzenia aktualizacji i podnosi ich.
Aby uzyskać więcej informacji na temat zawieszające zdarzeń, zobacz Jak: Wyłącz ograniczenia podczas wypełniania elementu Dataset.
Aktualizacja zestawu danych, błędy
Podczas aktualizacji rekordu w zestawie danych istnieje możliwość błąd.Na przykład przypadkowo może zapisać danych do kolumny, która ma niewłaściwy typ danych, lub jest zbyt długa lub które ma inny problem z integralności.Ponadto mogą mieć sprawdzanie poprawności specyficzne dla aplikacji, które można podnieść błędy niestandardowe w fazie zdarzenia aktualizacji.Aby uzyskać więcej informacji, zobacz Sprawdzanie poprawności danych w zestawach danych.
Utrzymywanie informacji o zmianach
Informacje o zmianach w zestawie danych jest utrzymywane na dwa sposoby: przez flagowanie wiersz, który wskazuje, czy został zmieniony (RowState) oraz utrzymywania wielu kopii rekordu (DataRowVersion).Korzystając z tej informacji procesów można określić, co się zmieniło w zestawie danych i można wysłać odpowiednie aktualizacje do źródła danych.
Właściwość RowState
RowState Właściwość DataRow obiekt jest wartość, która dostarcza informacji o stanie określonego wiersza danych.
W poniższej tabeli przedstawiono możliwe wartości DataRowState wyliczenie:
Wartość właściwością DataRowState |
Opis |
---|---|
Wiersz został dodany jako element do DataRowCollection.(Wiersz w tym stanie nie ma odpowiedniej wersji oryginalnej, ponieważ nie istniał w momencie ostatniej AcceptChanges została wywołana metoda). |
|
Wiersz został utworzony, ale nie jest częścią żadnego DataRowCollection.A DataRow obiekt jest w tym Państwie, natychmiast po jego utworzeniu i zanim zostanie dodane do kolekcji lub jeśli usunięto z kolekcji. |
|
Wartość kolumny w wierszu została zmieniona w jakiś sposób. |
|
Wiersz nie zmienił się od AcceptChanges ostatnio została wywołana. |
Wyliczanie DataRowVersion
Zestawów danych utrzymania wielu wersji rekordów.DataRowVersion Wyliczenie DataRow obiekt jest używany do zwracania określonej wersji wartość DataRow obiektu.
W poniższej tabeli przedstawiono możliwe wartości DataRowVersion wyliczenie:
Wartość DataRowVersion |
Opis |
---|---|
Wersja bieżącego rekordu zawiera wszystkie zmiany wykonywane w rekordzie od czasu ostatniego AcceptChanges została wywołana.Jeśli wiersz został usunięty wersja nie jest bieżącym. |
|
Wartość domyślna rekord określone dataset schematu lub źródła danych. |
|
Oryginalnej wersji rekordu jest kopią rekordu, jak stwierdzono, że ostatniej zmiany czasu zostały popełnione w zestawie danych.W praktyce jest zazwyczaj wersji rekordu jako przeczytane ze źródła danych. |
|
Proponowane wersji rekordu, który jest dostępny tymczasowo, podczas gdy trwa aktualizacja — to znaczy czas między wywołana BeginEdit metody i EndEdit metody.Zazwyczaj dostęp proponowane wersji rekordu obsługi zdarzenia takie jak RowChanging.Wywoływanie CancelEdit metoda cofa zmiany i usuwa wersję proponowanych wierszy danych. |
Oryginalny i aktualne wersje są przydatne informacje o aktualizacji jest przekazywane do źródła danych.Zazwyczaj aktualizacja wysyłanej do źródła danych jest nowych informacji do bazy danych w bieżącej wersji rekordu.Informacje z oryginalnej wersji jest używany do lokalizowania rekordów aktualizacji.Na przykład w przypadku gdy zmianie klucza podstawowego rekordu, musi mieć sposób zlokalizować właściwego rekordu w źródle danych, aby zaktualizować zmiany.Jeżeli istniały nie wersji oryginalnej, rekord najprawdopodobniej byłyby jest dołączany do źródła danych, wynikające, nie tylko w dodatkowych niechcianych rekordu, ale w jeden rekord, który jest niedokładna i nieaktualny.Dwie wersje są również używane w sterowania współbieżnością; można porównać oryginalnej wersji przeciwko rekordu w źródle danych, aby ustalić, jeśli rekord został zmieniony od momentu załadowania do obiektu dataset.
Wersja proponowana przydaje się, gdy trzeba wykonać sprawdzanie poprawności przed potwierdzeniem faktycznie zmiany zestawu danych.
Nawet jeśli rekordy zostały zmienione, nie zawsze są dostępne wersje oryginalnego lub bieżącego tego wiersza.Wstawienie nowego wiersza do tabeli wersja nie jest oryginalny, bieżącej wersji.Podobnie usuwanie wiersza w tabeli, wywołując Delete metody, istnieje oryginalnej wersji, ale nie w bieżącej wersji.
Można sprawdzić, czy istnieje określonej wersji rekordu, przez badanie wiersz danych HasVersion metody.Dostęp albo wersji rekordu, przekazując DataRowVersion wartość wyliczenia jako opcjonalny argument podczas żądania wartość kolumny.
Pobieranie zmienionych rekordów
Jest wspólne, nie Aktualizuj każdego rekordu w zestawie danych.Na przykład, użytkownik może pracować z Windows Forms DataGridView formant, który wyświetla wiele rekordów.Użytkownik może jednak aktualizacji tylko kilka rekordów, usunąć jeden i Wstaw nowy.Tabele danych i zestawach danych zawierają metody (GetChanges) do zwracania tylko wiersze, które zostały zmodyfikowane.
Można utworzyć podzbiór zmienionych rekordów przy użyciu GetChanges metoda danych tabeli (GetChanges) lub zestawu danych (GetChanges) sam.Wywołać metodę dla tabeli danych, funkcja zwraca kopię tabeli ze zmienionych rekordów.Podobnie jeśli wywołać metody obiektu dataset, otrzymasz nowego zestawu danych z rekordów zmienionych w nim.GetChangessam zwróci wszystkie zmienione rekordy.W przeciwieństwie, przekazując żądane DataRowState jako parametr do GetChanges metody, można określić podzbiór rekordów zmienionych ma: nowo dodane rekordy, rekordy oznaczone do usunięcia, odłączone rekordów lub zmodyfikowanych rekordów.
Uzyskiwanie podzbiór rekordów zmienionych jest szczególnie użyteczne, gdy chcesz wysłać do innego składnika do przetwarzania rekordów.Zamiast wysyłania całego zestawu danych, można zmniejszyć obciążenie komunikowania się z innych składników przez pobieranie rekordów, które wymaga składnika.Aby uzyskać więcej informacji, zobacz Jak: pobieranie zmienione wiersze.
Wprowadzanie zmian w zestawie danych
Zmiany w zestawie danych, RowState jest ustawiona właściwość zmienionych wierszy.Wersje oryginalne i bieżące rekordy są ustalone i utrzymywać i udostępniane przez RowVersion właściwości.Metadanych przechowywanych w tych właściwości reprezentujące zmiany jest potrzebny do wysłania aktualizacji właściwego źródła danych.
Jeśli zmiany odzwierciedlają bieżący stan źródła danych, trzeba już utrzymania tej informacji.Zwykle istnieją dwa razy po zestawu danych i jego źródłem są synchronizację:
Bezpośrednio po informacji załadowano do zestawu, jak podczas odczytu danych ze źródła danych.
Po wysłaniu zmian z zestawu danych do źródła danych (ale nie przed, ponieważ stracą Zmień informacje wymagane do wysyłania zmian do bazy danych).
Oczekujące zmiany można zatwierdzić DataSet, wywołując AcceptChanges metody.Zazwyczaj AcceptChanges o następujących godzinach w aplikacji zostanie wywołana.
Po załadowaniu dataset.Jeśli załadować dataset, wywołując TableAdapter Fill metodę, a następnie kartę automatycznie zatwierdza zmiany dla Ciebie.Jednakże załadowanie zestawu danych przez scalenie innego elementu dataset go potem trzeba ręcznie zatwierdzić zmiany.
[!UWAGA]
Można uniemożliwić automatyczne przydzielanie zmiany podczas wywoływania karta Fill metody przez ustawienie AcceptChangesDuringFill właściwości karty do false.Jeżeli jest ustawiony na false, a następnie RowState każdego wiersza dodaje podczas wypełnienia jest ustawiona Added.
Po przesłały zmiany zestawu danych do innego procesu, takie jak usługi XML sieci Web.
Przestroga Zatwierdzeniem zmian w ten sposób wymazuje wszystkie informacje o zmianach.Nie dokonać zmian, aż po wykonaniu wszystkich operacji, w których aplikacja zależy wiedząc, jakie zmiany zostały dokonane w zestawie danych.
Ma następujące skutki tej metody:
Zapisuje Current wersji rekordu w jego Original wersji nadpisywania wersji oryginalnej.
Usuwa żadnego wiersza, którego RowState właściwość jest ustawiona na Deleted.
AcceptChanges Metoda jest dostępna na trzech poziomach.Można go wywołać na DataRow obiekt, który zatwierdza zmiany tylko do tego wiersza.Można również wywołać, na DataTable obiekt, aby zatwierdzić wszystkie wiersze w tabeli lub na DataSet obiekt, aby zatwierdzić wszystkie oczekujące zmiany we wszystkich rekordach wszystkich tabel dataset.
W poniższej tabeli opisano zmiany, które zobowiązane są oparte na co obiekt wywoływana jest metoda.
Metoda |
Wynik |
---|---|
Zmiany zostały wprowadzone tylko w określonym wierszu |
|
Zmiany zostały wprowadzone na wszystkie wiersze w określonej tabeli |
|
Zmiany zostały wprowadzone we wszystkich wierszach we wszystkich tabelach zestawu danych |
[!UWAGA]
Jeśli załadować dataset, wywołując TableAdapter Fill metodę, nie trzeba jawnie zaakceptować zmiany; Domyślnie Fill wywołania metody AcceptChanges metody po zakończeniu wypełniania tabeli danych.
Metody powiązane, RejectChanges, cofa skutki zmian przez kopiowanie Original wersji z powrotem do Current wersji rekordów i ustawienie RowState z każdego rekordu wróć do Unchanged.
Sprawdzanie poprawności danych
W celu sprawdzenia, czy dane w aplikacji spełnia wymagania procesów, które jest przekazywane, często trzeba dodać sprawdzania poprawności.Może to obejmować sprawdzanie prawidłowe sprawdzanie poprawności danych wysłanych do aplikacji przez inną aplikację wpisu użytkownika w formularzu lub nawet sprawdzanie obliczonej informacje wewnątrz składnika mieszczą się w ramach ograniczeń danych źródła i stosowania wymagań.
Można sprawdzić poprawność danych na kilka sposobów:
Warstwy biznesowej przez dodanie kodu do aplikacji do sprawdzania poprawności danych.Zestaw danych jest jednym miejscu, można to zrobić.Zestaw danych zawiera niektóre korzyści sprawdzania poprawności typu back-end — takie jak możliwość sprawdzania poprawności zmian są zmiany wartości wierszy i kolumn.Aby uzyskać więcej informacji, zobacz Sprawdzanie poprawności danych w zestawach danych.
Warstwy prezentacji, dodając sprawdzanie poprawności formularzy.Aby uzyskać więcej informacji, zobacz Sprawdzanie poprawności danych wejściowych użytkownika w Windows Forms.
W danych wewnętrzna, przez wysłanie danych do źródła danych — na przykład baza danych — i zezwalając na akceptowanie lub odrzucanie danych.Podczas pracy z bazą danych, która posiada zaawansowane urządzenia do sprawdzania poprawności danych i dostarczanie informacji o błędzie, może to być praktyczne podejście, ponieważ może sprawdzać poprawność danych, niezależnie od tego, gdzie pochodzi z.Jednak może nie pomieścić wymagania specyficzne dla aplikacji.Ponadto posiadające źródło danych, sprawdzanie poprawności danych może spowodować liczne przeloty źródła danych, w zależności od sposobu aplikacji ułatwia rozwiązywanie błędów sprawdzania poprawności, podniesione przez back-end.
Uwaga dotycząca zabezpieczeń Podczas korzystania z poleceń danych z CommandType ustaw właściwość Text, ostrożnie sprawdź informacje wysyłane z klienta przed przekazaniem go do bazy danych.Złośliwi użytkownicy mogą podejmować próby wysłania (wstrzyknąć) zmodyfikowany lub dodatkowe instrukcje SQL w celu uzyskania nieautoryzowanego dostępu lub uszkodzenia bazy danych.Przed przeniesieniem danych wejściowych użytkownika do bazy danych zawsze należy sprawdzić, czy informacje są prawidłowe; jest najlepszym rozwiązaniem zawsze używaj sparametryzowanych kwerend lub procedur przechowywanych, gdy to możliwe.Aby uzyskać więcej informacji, zobacz Script Exploits Overview.
Po wprowadzeniu zmian w zestawie danych, można przekazać zmian do źródła danych.Najczęściej, czy to przez wywołanie Update metodę TableAdapter (lub karta danych).Pętle metody każdy rekord w tabeli danych określa, jaki typ aktualizacji jest wymagane (aktualizacji, wstawiania lub usuwania), jeśli są, a następnie wykonuje odpowiednie polecenie.
W jaki sposób przekazywane aktualizacji źródła danych
Ilustracją jak zaktualizowane Załóżmy, że aplikacja używa obiektu dataset zawierającego tabelę danych.Aplikacja pobiera dwa wiersze z bazy danych.Po ich pobraniu tabela w pamięci danych wygląda następująco:
(RowState) CustomerID Name Status
(Unchanged) c200 Robert Lyon Good
(Unchanged) c400 Nancy Buchanan Pending
Aplikacja zmienia stan Nancy Buchanan "Preferowane". W wyniku tej zmiany wartości RowState zmiany właściwości dla tego wiersza z Unchanged do Modified.Wartość RowState właściwości dla pierwszego wiersza pozostaje Unchanged.Tabela danych teraz wygląda następująco:
(RowState) CustomerID Name Status
(Unchanged) c200 Robert Lyon Good
(Modified) c400 Nancy Buchanan Preferred
Aplikację można teraz wywołuje Update metodę transmisji danych do bazy danych.Metoda sprawdza każdy wiersz z kolei.W pierwszym wierszu metody transmituje nie instrukcji SQL do bazy danych, ponieważ tego wiersza nie zmienił się od pierwotnie zostało pobrane z bazy danych.
Dla drugiego wiersza, jednak Update metoda wywołuje polecenie odpowiednie dane i automatycznie przesyła go do bazy danych.Dialekt obsługiwane przez Magazyn danych SQL zależy od określonej składni instrukcji SQL.Ale odnotowania są następujące ogólne cechy przekazywanych instrukcji SQL:
Instrukcja SQL przekazywane jest instrukcja UPDATE.Karta wie użyć instrukcji UPDATE, ponieważ wartość RowState jest właściwość Modified.
Przekazane instrukcja SQL zawiera klauzulę WHERE, wskazująca, że cel instrukcja UPDATE jest wiersz którego CustomerID = 'c400'.Ta część instrukcji SELECT odróżnia wiersza docelowego od wszystkich innych, ponieważ CustomerID jest kluczem podstawowym tabeli docelowej.Informacje o klauzuli WHERE pochodzi z oryginalnej wersji rekordu (DataRowVersion.Original), w przypadku gdy zostały zmienione wartości wymagane do identyfikacji wiersza.
Przekazywane instrukcja SQL zawiera klauzuli SET ustawić nowe wartości kolumny zmodyfikowane.
[!UWAGA]
Jeśli TableAdapter UpdateCommand właściwość została ustawiona nazwa procedury przechowywanej, karta nie skonstruować instrukcji SQL.Zamiast tego wywołuje procedurę przechowywaną z odpowiednie parametry przekazywane w.
Przekazywanie parametrów
Wartości dla rekordów do aktualizacji bazy danych zazwyczaj są przekazywane za pomocą parametrów.Gdy TableAdapter Update metoda wykonuje instrukcję aktualizacji, należy wypełnić wartości parametru.Pobiera ona wartości te Parameters kolekcji danych odpowiednie polecenia — w tym przypadku UpdateCommand obiektu TableAdapter.
Jeśli użyto narzędzia Visual Studio do generowania karty danych, UpdateCommand obiekt będzie zawierać zbiór parametrów, które odpowiadają symbol zastępczy dla każdego parametru w instrukcji.
SqlParameter.SourceColumn Właściwość każdego parametru wskazuje na kolumnę w tabeli danych.Na przykład SourceColumn właściwość au_id i Original_au_id parametry ustawiono dowolnej kolumny w tabeli danych zawiera identyfikator autora.Gdy karta Update uruchamia metodę odczytuje autora kolumna Identyfikator rekordu aktualizowane i wstawia wartości w instrukcji.
W instrukcji UPDATE należy określić zarówno nowe wartości (te, które zostaną zapisane do rekordu) jak również stare wartości (tak, że należy zaktualizować rekord może znajdować się w bazie danych).Istnieją dwa parametry dla każdej wartości: jedną dla klauzuli SET i inną dla klauzuli WHERE.Oba parametry odczytu danych z rekordu aktualizowane, ale one uzyskać różne wersje wartość kolumny na podstawie parametru Właściwość SqlParameter.SourceVersion.Parametr dla klauzuli SET pobiera bieżącą wersję i parametr dla klauzuli WHERE pobiera oryginalnej wersji.
[!UWAGA]
Można również ustawić wartości w Parameters kolekcji samodzielnie w kodzie należy zazwyczaj karty danych obsługi zdarzenia RowChanging zdarzenia.
Aktualizowanie powiązanych tabel
Jeśli zestawu danych zawiera wiele tabel, należy zaktualizować je indywidualnie przez wywołanie Update metody każdej karty dane oddzielnie.Jeśli tabele relacji nadrzędny podrzędny, jest prawdopodobne, że będzie wysyłać aktualizacje do bazy danych w określonej kolejności.Typowym scenariuszem jest dodanie zarówno nadrzędnego i powiązanych rekordach podrzędnych do obiektu dataset — na przykład, nowy rekord klienta i jeden lub więcej rekordów pokrewnych zamówienia.Jeśli samej bazy danych jest Wymuszanie reguł integralności relacyjnych, następnie wzbudzi błędów po wysłaniu nowe podrzędne rekordy do bazy danych zanim rekord nadrzędny został utworzony.
Odwrotnie, usunięcie powiązanych rekordów w zestawie danych, następnie ogólnie należy wysłać aktualizacje w odwrotnej kolejności: tabeli podrzędnej po pierwsze, następnie nadrzędny tabeli.W przeciwnym razie baza danych jest stwarzać błąd, ponieważ reguły więzów integralności będzie uniemożliwić usunięcie rekord nadrzędny, podczas gdy wciąż istnieją rekordy pokrewne podrzędnych.
Zasady wysyłania aktualizacji tabel pokrewnych jest przestrzeganie tej kolejności:
Tabeli podrzędnej: usuwanie rekordów.
Tabela nadrzędna: wstawiania, aktualizacji i usuwania rekordów.
Tabeli podrzędnej: wstawianie i aktualizacja rekordów.
Aby uzyskać więcej informacji, zobacz Instruktaż: Zapisywanie danych do bazy danych (wielu tabel).
Kontrola zbieżności
Ponieważ zestawów danych jest odłączony od źródła danych, nie trzymaj blokad Records w źródle danych.Dlatego jeśli chcesz zaktualizować bazę danych i aplikacji do utrzymania sterowania współbieżnością ważne jest, należy uzgodnić rekordów w zestawie danych z tymi w bazie danych.Na przykład można znaleźć że rekordów bazy danych uległy zmianie od czasu ostatniego wypełnianie dataset.W takim przypadku musi wykonać właściwe stosowanie logiki do określenia, co powinno się zdarzyć z rekordu bazy danych lub zmienionego rekordu, znajdującym się w zestawu danych.
Zobacz też
Zadania
Jak: aktualizuje dane za pomocą TableAdapter
Koncepcje
Przygotowanie aplikacji do odbierania danych
Pobieranie danych do aplikacji
Wiązanie formantów z danych w programie Visual Studio
Sprawdzanie poprawności danych