Programy współpracujące z bazą danych. Tworzenie aplikacji bazodanowych. Projektowanie infologiczne, uzasadnienie obiektów informacyjnych, dziedzin, atrybutów, linków, opracowanie modelu informacyjnego

Utwórzmy prostą aplikację bazodanową wyświetlającą informacje z tabeli Turyści oraz wpis tabeli Informacje o turystach skojarzony z bieżącym rekordem w tabeli Turyści z bazy danych Microsoft Access.

W tym celu utworzymy pustą aplikację Windows. Wygląd środowiska

rozwój pokazano na rysunku 39.

Ryż. 39. Pusta aplikacja

Rysunek 39 przedstawia grupę komponentów „Dane” („Dane”), która zawiera komponenty służące do uzyskiwania dostępu do danych i manipulowania nimi.

Powiązanie danych bazy danych z formularzem odbywa się za pomocą komponentu „Źródło powiązania”. Przenieśmy to do formularza. Po umieszczeniu go na formularzu środowisko programistyczne przyjmuje następującą postać (rys. 40).

Ryż. 40. Komponent Binding Source w formularzu

Komponent jest niewizualny, więc jest wyświetlany w dodatkowym panelu. Główną właściwością komponentu jest właściwość DataSource, która wskazuje na źródło danych. Domyślnie właściwość jest pusta, więc musisz utworzyć jej wartość. Po wybraniu tej właściwości w oknie właściwości pojawia się następujące okno (Rys. 41).

Ryż. 41. Lista źródeł danych

Lista jest obecnie pusta, więc musisz utworzyć nowe źródło danych, wybierając polecenie „Dodaj źródło danych projektu”, aby utworzyć nowe źródło danych i połączyć się z nim. Pojawi się następujące okno dialogowe (rys. 42).

Ryż. 42. Lista źródeł danych

To okno dialogowe zawiera następujący wybór źródeł danych:

Baza danych - Baza danych;

Usługa - Usługa, to jest usługa dostarczająca dane. Najczęściej jest to usługa internetowa;

Obiekt — obiekt do wyboru obiektu, który będzie generował dane oraz obiekty do pracy z nimi.

W naszym przypadku musisz wybrać pozycję "Baza danych". Pojawi się okno wyboru połączenia danych (rys. 43).

Ryż. 43. Wybór połączenia danych

Celem tego okna dialogowego jest utworzenie ciągu połączenia opisującego parametry połączenia dla silnika ADO, takie jak typ bazy danych, jej lokalizacja, nazwy użytkowników, funkcje bezpieczeństwa i tak dalej.

Lista rozwijana okna dialogowego zawiera wszystkie utworzone wcześniej połączenia. Jeżeli wymaganego połączenia nie ma na liście, należy użyć przycisku „Nowe połączenie”. Naciśnięcie przycisku prowadzi do pojawienia się następującego okna dialogowego (Rys. 44).

To okno dialogowe wybiera typ źródła danych (w tym przypadku Microsoft Access), nazwę bazy danych (w tym przypadku nazwę i lokalizację pliku bazy danych), nazwę użytkownika i hasło użyte do połączenia z bazą danych. Przycisk „Zaawansowane” pozwala ustawić dużą liczbę parametrów związanych z różnymi częściami silnika ADO. Użycie przycisku „Testuj połączenie” upewni się, że wprowadzone parametry są poprawne i połączenie działa.

Ryż. 44. Utwórz nowe połączenie

Ostatnim krokiem okna dialogowego jest wybór tych tabel lub innych obiektów bazy danych, które są potrzebne w tym źródle danych. Okno wyboru pokazano na rysunku 45.

Ryż. 45. Wybór wymaganych tabel

W tym oknie wybierane są tabele „Turyści” i „Informacje o turystach”. Ponieważ w bazie danych nie utworzono żadnych obiektów innych niż tabele, na rysunku 45 pokazano tylko tabele. Na tym kończy się tworzenie źródła danych. Po kliknięciu przycisku „Zakończ” obok składnika BindingSource, na formularzu pojawia się składnik DataSet.

Teraz powyższe dane muszą zostać wyświetlone na formularzu. Najprostszym sposobem wyświetlania danych jest użycie składnika DataGridView z grupy składników Data. Element jest wizualny i wygląda tak na formularzu (ryc. 46).

Ryż. 46. ​​Komponent DataGridView

Natychmiast pojawia się okno ustawień komponentu, które określa jego możliwości edycji danych: „Włącz edycję” („Włącz dodawanie”), „Włącz edycję” („Włącz edycję”), „Włącz usuwanie” („Włącz usuwanie”); możliwość zmiany kolejności kolumn: „Włącz możliwość zmiany kolejności kolumn” („Włącz zmianę kolejności kolumn”); a także możliwość przypięcia w kontenerze nadrzędnym.

Aby komponent mógł wyświetlać dane, musisz wybrać źródło danych z listy rozwijanej. Wybranie listy rozwijanej prowadzi do pojawienia się następującego okna dialogowego (Rys. 47).

Ryż. 47. Wybór źródła danych dla DataGridView

W tym przypadku jako źródło danych wybraliśmy tabelę „Turyści”. Wybór ten zmienia wygląd ekranu w następujący sposób (Rys. 48).

Ryż. 48. Komponent DataGridView wyświetla strukturę tabeli

Rysunek pokazuje, że istnieje inny składnik BindingSource i składnik TableAdapter, który współpracuje z tabelą „Turyści”. Należy pamiętać, że w czasie projektowania lub podczas opracowywania dane z tabeli nie są wyświetlane.

Teraz musisz wyświetlić dane z powiązanej tabeli „Informacje dla turystów”. W tym celu umieśćmy w formularzu kolejny składnik DataGridView i wybierzmy jako źródło danych (rys. 49).

Ryż. 49. Wybór źródła danych dla drugiego DataGridView

W tym przypadku źródłem danych nie jest sama tabela „Informacje o turystach”, ale łącze (Źródło wiążące) między tabelami „Turyści” i „Informacje o turystach”. Ten wybór gwarantuje, że tylko te wiersze w tabeli Informacje turystyczne, które są powiązane z bieżącym wierszem w tabeli Turyści, zostaną wybrane z tabeli Informacje turystyczne. Zapewnia również, że powiązane dane są prawidłowo aktualizowane i usuwane. Działanie powstałej aplikacji pokazano na rysunku 50.

Ryż. 50. Aplikacja bazodanowa w akcji

Poruszanie się po danych za pomocą klawiszy strzałek jest niewygodne. Aby uprościć nawigację po danych, istnieje składnik BindingNavigator. Umieśćmy go na formularzu (ryc. 51).

Ryż. 51. Komponent BindingNavigator w formularzu

Ten komponent umożliwia nawigację między wpisami w tabeli, dodawanie i usuwanie wierszy tabeli. Funkcje i wygląd składnika można dostosowywać, ponieważ jest to pasek menu ToolStripContainer.

Właściwość, która definiuje tabelę do nawigacji, to właściwość BindingSource. Ustaw wartość tej właściwości na „touristsBindingSource”. Podczas pracy element wygląda tak (ryc. 52).

Ryż. 52. Komponent BindingNavigator w działaniu

Edycja danych w komórkach składnika DataGridView z odpowiednimi ustawieniami jest możliwa, ale niewygodna i nieracjonalna. W szczególności trudno jest sprawdzić wprowadzone wartości pod kątem błędów. Dlatego dla tabeli „Turyści” wykonamy maskownicę umożliwiającą wyświetlanie danych w komponentach TextBox oraz ich edycję. W tym celu umieśćmy na formularzu kontener typu Panel, a na nim trzy komponenty TextBox w następujący sposób (rys. 53).

Ryż. 53. Panel ekranowy do edycji zapisów tabeli „Turyści”

Teraz musisz powiązać komponenty TextBox z odpowiednimi polami tabeli „Turyści”. Aby to zrobić, użyj właściwości z grupy DataBindings — Advanced, pokazanej na rysunku 54.

Ryż. 54. Właściwość „DataBindings — Zaawansowane”

Wybranie tej właściwości prowadzi do pojawienia się okna dialogowego pokazanego na rysunku 55. To okno dialogowe umożliwia nie tylko powiązanie danych, ale także ustawienie zdarzenia, w ramach którego dane będą aktualizowane, a także formatowanie danych podczas ich wyświetlania.

Dla górnego komponentu TextBox z listy rozwijanej Binding wybierz źródło danych "touristsBmdmgSource" oraz pole źródła - "Nazwisko". Dla środkowego i dolnego składnika TextBox wybierzemy to samo źródło danych oraz odpowiednio pola „Imię” i „Patronimiczny”.

Opracowana aplikacja w działaniu wygląda tak (rys. 56).

Ryż. 55. Okno dialogowe dla właściwości „DataBindings - Advanced”

Ryż. 56. Wiązanie danych z komponentami wizualnymi

Jednak po wprowadzeniu zmian wszystkie nowe dane pozostają tylko w formularzu. Nie są one przechowywane w bazie danych, a przy ponownym wywołaniu aplikacji oczywiście będą nieobecne. Dzieje się tak, ponieważ dane zostały załadowane do obiektu DataSet, który jest kopią tabeli w pamięci. Wszystkie akcje są wykonywane na tej kopii. Aby zmiany zostały odzwierciedlone w bazie danych, należy wykonać metodę Update klasy TableAdapter. W związku z tym w tworzonej aplikacji konieczne jest umieszczenie przycisku „Aktualizuj” i wpisanie do handlera zdarzeń Click następującego kodu programu:

turyściTableAdapteGUpdate(bDTur_firmDataSet); Tourist_informationTableAdapter.Update(bDTur_firmDataSet);

Ten kod aktualizuje informacje w tabelach „Turyści” i „Informacje turystyczne” dostarczonych przez źródło danych. Zauważ, że ta metoda jest przeciążona, a jej warianty umożliwiają aktualizację zarówno pojedynczego wiersza tabeli, jak i grupy wierszy.

Utwórzmy prostą aplikację bazodanową wyświetlającą informacje z tabeli Turyści oraz wpis tabeli Informacje o turystach skojarzony z bieżącym rekordem w tabeli Turyści z bazy danych Microsoft Access.

W tym celu utworzymy pustą aplikację Windows. Wygląd środowiska

rozwój pokazano na rysunku 39.

Ryż. 39. Pusta aplikacja

Rysunek 39 przedstawia grupę komponentów „Dane” („Dane”), która zawiera komponenty służące do uzyskiwania dostępu do danych i manipulowania nimi.

Powiązanie danych bazy danych z formularzem odbywa się za pomocą komponentu „Źródło powiązania”. Przenieśmy to do formularza. Po umieszczeniu go na formularzu środowisko programistyczne przyjmuje następującą postać (rys. 40).

Ryż. 40. Komponent Binding Source w formularzu

Komponent jest niewizualny, więc jest wyświetlany w dodatkowym panelu. Główną właściwością komponentu jest właściwość DataSource, która wskazuje na źródło danych. Domyślnie właściwość jest pusta, więc musisz utworzyć jej wartość. Po wybraniu tej właściwości w oknie właściwości pojawia się następujące okno (Rys. 41).

Ryż. 41. Lista źródeł danych

Lista jest obecnie pusta, więc musisz utworzyć nowe źródło danych, wybierając polecenie „Dodaj źródło danych projektu”, aby utworzyć nowe źródło danych i połączyć się z nim. Pojawi się następujące okno dialogowe (rys. 42).

Ryż. 42. Lista źródeł danych

To okno dialogowe zawiera następujący wybór źródeł danych:

Baza danych - Baza danych;

Usługa - Usługa, to jest usługa dostarczająca dane. Najczęściej jest to usługa internetowa;

Obiekt — obiekt do wyboru obiektu, który będzie generował dane oraz obiekty do pracy z nimi.

W naszym przypadku musisz wybrać pozycję "Baza danych". Pojawi się okno wyboru połączenia danych (rys. 43).

Ryż. 43. Wybór połączenia danych

Celem tego okna dialogowego jest utworzenie ciągu połączenia opisującego parametry połączenia dla silnika ADO, takie jak typ bazy danych, jej lokalizacja, nazwy użytkowników, funkcje bezpieczeństwa i tak dalej.

Lista rozwijana okna dialogowego zawiera wszystkie utworzone wcześniej połączenia. Jeżeli wymaganego połączenia nie ma na liście, należy użyć przycisku „Nowe połączenie”. Naciśnięcie przycisku prowadzi do pojawienia się następującego okna dialogowego (Rys. 44).

To okno dialogowe wybiera typ źródła danych (w tym przypadku Microsoft Access), nazwę bazy danych (w tym przypadku nazwę i lokalizację pliku bazy danych), nazwę użytkownika i hasło użyte do połączenia z bazą danych. Przycisk „Zaawansowane” pozwala ustawić dużą liczbę parametrów związanych z różnymi częściami silnika ADO. Użycie przycisku „Testuj połączenie” upewni się, że wprowadzone parametry są poprawne i połączenie działa.

Ryż. 44. Utwórz nowe połączenie

Ostatnim krokiem okna dialogowego jest wybór tych tabel lub innych obiektów bazy danych, które są potrzebne w tym źródle danych. Okno wyboru pokazano na rysunku 45.

Ryż. 45. Wybór wymaganych tabel

W tym oknie wybierane są tabele „Turyści” i „Informacje o turystach”. Ponieważ w bazie danych nie utworzono żadnych obiektów innych niż tabele, na rysunku 45 pokazano tylko tabele. Na tym kończy się tworzenie źródła danych. Po kliknięciu przycisku „Zakończ” obok składnika BindingSource, na formularzu pojawia się składnik DataSet.

Teraz powyższe dane muszą zostać wyświetlone na formularzu. Najprostszym sposobem wyświetlania danych jest użycie składnika DataGridView z grupy składników Data. Element jest wizualny i wygląda tak na formularzu (ryc. 46).

Ryż. 46. ​​Komponent DataGridView

Natychmiast pojawia się okno ustawień komponentu, które określa jego możliwości edycji danych: „Włącz edycję” („Włącz dodawanie”), „Włącz edycję” („Włącz edycję”), „Włącz usuwanie” („Włącz usuwanie”); możliwość zmiany kolejności kolumn: „Włącz możliwość zmiany kolejności kolumn” („Włącz zmianę kolejności kolumn”); a także możliwość przypięcia w kontenerze nadrzędnym.

Aby komponent mógł wyświetlać dane, musisz wybrać źródło danych z listy rozwijanej. Wybranie listy rozwijanej prowadzi do pojawienia się następującego okna dialogowego (Rys. 47).

Ryż. 47. Wybór źródła danych dla DataGridView

W tym przypadku jako źródło danych wybraliśmy tabelę „Turyści”. Wybór ten zmienia wygląd ekranu w następujący sposób (Rys. 48).

Ryż. 48. Komponent DataGridView wyświetla strukturę tabeli

Rysunek pokazuje, że istnieje inny składnik BindingSource i składnik TableAdapter, który współpracuje z tabelą „Turyści”. Należy pamiętać, że w czasie projektowania lub podczas opracowywania dane z tabeli nie są wyświetlane.

Teraz musisz wyświetlić dane z powiązanej tabeli „Informacje dla turystów”. W tym celu umieśćmy w formularzu kolejny składnik DataGridView i wybierzmy jako źródło danych (rys. 49).

Ryż. 49. Wybór źródła danych dla drugiego DataGridView

W tym przypadku źródłem danych nie jest sama tabela „Informacje o turystach”, ale łącze (Źródło wiążące) między tabelami „Turyści” i „Informacje o turystach”. Ten wybór gwarantuje, że tylko te wiersze w tabeli Informacje turystyczne, które są powiązane z bieżącym wierszem w tabeli Turyści, zostaną wybrane z tabeli Informacje turystyczne. Zapewnia również, że powiązane dane są prawidłowo aktualizowane i usuwane. Działanie powstałej aplikacji pokazano na rysunku 50.

Ryż. 50. Aplikacja bazodanowa w akcji

Poruszanie się po danych za pomocą klawiszy strzałek jest niewygodne. Aby uprościć nawigację po danych, istnieje składnik BindingNavigator. Umieśćmy go na formularzu (ryc. 51).

Ryż. 51. Komponent BindingNavigator w formularzu

Ten komponent umożliwia nawigację między wpisami w tabeli, dodawanie i usuwanie wierszy tabeli. Funkcje i wygląd składnika można dostosowywać, ponieważ jest to pasek menu ToolStripContainer.

Właściwość, która definiuje tabelę do nawigacji, to właściwość BindingSource. Ustaw wartość tej właściwości na „touristsBindingSource”. Podczas pracy element wygląda tak (ryc. 52).

Ryż. 52. Komponent BindingNavigator w działaniu

Edycja danych w komórkach składnika DataGridView z odpowiednimi ustawieniami jest możliwa, ale niewygodna i nieracjonalna. W szczególności trudno jest sprawdzić wprowadzone wartości pod kątem błędów. Dlatego dla tabeli „Turyści” wykonamy maskownicę umożliwiającą wyświetlanie danych w komponentach TextBox oraz ich edycję. W tym celu umieśćmy na formularzu kontener typu Panel, a na nim trzy komponenty TextBox w następujący sposób (rys. 53).

Ryż. 53. Panel ekranowy do edycji zapisów tabeli „Turyści”

Teraz musisz powiązać komponenty TextBox z odpowiednimi polami tabeli „Turyści”. Aby to zrobić, użyj właściwości z grupy DataBindings — Advanced, pokazanej na rysunku 54.

Ryż. 54. Właściwość „DataBindings — Zaawansowane”

Wybranie tej właściwości prowadzi do pojawienia się okna dialogowego pokazanego na rysunku 55. To okno dialogowe umożliwia nie tylko powiązanie danych, ale także ustawienie zdarzenia, w ramach którego dane będą aktualizowane, a także formatowanie danych podczas ich wyświetlania.

Dla górnego komponentu TextBox z listy rozwijanej Binding wybierz źródło danych "touristsBmdmgSource" oraz pole źródła - "Nazwisko". Dla środkowego i dolnego składnika TextBox wybierzemy to samo źródło danych oraz odpowiednio pola „Imię” i „Patronimiczny”.

Opracowana aplikacja w działaniu wygląda tak (rys. 56).

Ryż. 55. Okno dialogowe dla właściwości „DataBindings - Advanced”

Ryż. 56. Wiązanie danych z komponentami wizualnymi

Jednak po wprowadzeniu zmian wszystkie nowe dane pozostają tylko w formularzu. Nie są one przechowywane w bazie danych, a przy ponownym wywołaniu aplikacji oczywiście będą nieobecne. Dzieje się tak, ponieważ dane zostały załadowane do obiektu DataSet, który jest kopią tabeli w pamięci. Wszystkie akcje są wykonywane na tej kopii. Aby zmiany zostały odzwierciedlone w bazie danych, należy wykonać metodę Update klasy TableAdapter. W związku z tym w tworzonej aplikacji konieczne jest umieszczenie przycisku „Aktualizuj” i wpisanie do handlera zdarzeń Click następującego kodu programu:

turyściTableAdapteGUpdate(bDTur_firmDataSet); Tourist_informationTableAdapter.Update(bDTur_firmDataSet);

Ten kod aktualizuje informacje w tabelach „Turyści” i „Informacje turystyczne” dostarczonych przez źródło danych. Zauważ, że ta metoda jest przeciążona, a jej warianty umożliwiają aktualizację zarówno pojedynczego wiersza tabeli, jak i grupy wierszy.

OPRACOWANIE APLIKACJI DO PRACY Z BAZAMI DANYCH

Roza Gajnanowa

wykładowca Katedry Dyscyplin Ogólnokształcących

Kazański Narodowy Uniwersytet Technologiczny Badawczy

Rosja, Kazań

ADNOTACJA

W artykule omówiono metody dostępu do baz danych oraz interfejsy programistyczne wykorzystywane w tych metodach dostępu. Rozważana jest integracja aplikacji Visual C# z serwerem DBMS Microsoft SQL Server 2012. Przykładem jest rozwój systemu informatycznego „Biuro podróży”.

ABSTRAKCYJNY

W artykule przeanalizowano metody dostępu do baz danych oraz interfejsy programowe wykorzystywane w tych metodach dostępu. Rozważamy integrację aplikacji Visual C# z serwerem bazy danych Microsoft SQL Server 2012. Jako przykład rozważa się rozwój systemu informacyjnego „Agencja Turystyczna”.

Słowa kluczowe: baza danych, serwer SQL, aplikacja, użytkownicy, sterowanie, zapytanie.

słowa kluczowe: baza danych, serwer SQL, aplikacja, użytkownicy, element sterujący, zapytanie.

System informacyjny to połączony zestaw środków, metod i personelu służących do przechowywania, przetwarzania i udostępniania informacji w celu osiągnięcia wyznaczonego celu. Opracowany system informatyczny zostanie zbudowany w technologii klient-serwer. W takich systemach informacje są przechowywane na serwerze, a interfejs systemu informatycznego na komputerach klienckich, za pośrednictwem których użytkownicy systemu informatycznego uzyskują dostęp do danych.

Podczas opracowywania systemu informatycznego należy rozwiązać dwa główne zadania:

  • zadanie opracowania bazy danych przeznaczonej do przechowywania informacji;
  • zadanie opracowania graficznego interfejsu użytkownika dla aplikacji klienckich.

Baza danych "Biuro podróży" jest tworzona na Microsoft SQL Server 2012. W bazie przechowywane są informacje o klientach tego biura podróży (turystów), o oferowanych przez nie wycieczkach, o rejestracji i płatności za wycieczki. Na etapie projektowania bazy danych tworzone są tabele „Turyści”, „Wycieczki”, „Zezwolenia”, „Pory roku”, „Płatność”. Pomiędzy tabelami tworzone są łącza.

Z aplikacji biura podróży korzystać będą szef biura podróży, kierownicy sprzedaży, księgowy, kasjer oraz pracownicy biurowi biura podróży. Jeden z pracowników biura zostaje wyznaczony na administratora systemu. Tylko on będzie utrzymywał konta użytkowników. Oprócz pięciu głównych tabel tworzona jest tabela „Użytkownicy”, która zawiera informacje o użytkownikach bazy danych. Ta tabela nie jest powiązana z innymi tabelami. Struktura tej tabeli: kod użytkownika, nazwisko, stanowisko, login i hasło. Tylko administrator systemu może wprowadzać zmiany w tej tabeli.

System bezpieczeństwa SQL Server opiera się na dwóch pojęciach: uwierzytelnianiu i autoryzacji. Administrator systemu odpowiedzialny za bezpieczeństwo SQL Server tworzy osobny obiekt logowania dla każdego użytkownika. Ten obiekt zawiera nazwę konta użytkownika SQL Server, hasło, pełną nazwę i inne atrybuty używane do kontroli dostępu do baz danych SQL Server. Łącząc się z SQL Server, użytkownik uzyskuje dostęp do tych baz danych, w których zarejestrowane jest jego konto. Aby zarejestrować konto w konkretnej bazie danych, administrator systemu tworzy na koncie nazwę użytkownika bazy danych i kojarzy ją z konkretnym kontem. Administrator systemu przyznaje użytkownikom określone uprawnienia. Kierownik sprzedaży może dokonać zmian w tabelach „Turyści” i „Zezwolenia” oraz zmienić kolumnę „Liczba miejsc” w tabeli „Wycieczki” po sprzedaży kolejnego vouchera. Pracownik biura podróży może dokonać zmian w tabelach „Pory roku” i „Wycieczki”. Księgowy i kasjer - w tabeli „Płatność”.

Nadawanie uprawnień można wykonać w SQL Server Management Studio, otwierając okna właściwości odpowiedniego użytkownika. Możesz również udzielić uprawnień za pomocą instrukcji GRANT. Przykłady nadawania uprawnień menedżerowi. Poniższe oświadczenie daje użytkownikowi Menedger prawo do przeglądania, modyfikowania tabeli Turyści, wstawiania nowych wierszy i usuwania przestarzałych danych.

USE Biuro Podróży

PRZYZNAJ WYBIERZ, AKTUALIZUJ, WSTAW, USUŃ

NA Turyści

Podobna instrukcja jest stworzona do pracy z tabelą „Wycieczki”. Aby dać menadżerowi prawo do zmiany tylko jednej kolumny tabeli „Wycieczki” po nazwie tabeli w nawiasie podana jest nazwa zmienionej kolumny „Wycieczki” (Liczba miejsc). Pod warunkiem SELECT, UPDATE operacji.

W języku Data Control Language (DCL) dostępne są cztery instrukcje: COMMIT (zakończenie), ROLLBACK (wycofanie), GRANT (przyznanie), REVOKE (unieważnienie). Wszystkie te instrukcje dotyczą ochrony bazy danych przed przypadkowym lub celowym uszkodzeniem. Bazy danych są podatne na ataki właśnie wtedy, gdy wprowadzane są w nich zmiany. Aby chronić bazę danych, SQL zapewnia ograniczanie operacji. Co może to zmienić, tak aby były realizowane tylko w ramach transakcji. Gdy wielu użytkowników próbuje jednocześnie korzystać z tej samej tabeli bazy danych, tworzona jest sytuacja rywalizacji. Problemy ze współbieżnością pojawiają się nawet w stosunkowo prostych aplikacjach, jeśli aplikacja jest zainstalowana i uruchamiana w systemie wielu użytkowników, który nie ma wystarczającej kontroli współbieżności. Transakcje nie powodują konfliktu, jeśli są wykonywane sekwencyjnie.

Jednym z głównych narzędzi do utrzymania integralności bazy danych jest transakcja. Transakcja hermetyzuje wszystkie instrukcje SQL, które mogą mieć wpływ na bazę danych. Transakcja SQL kończy się jedną z dwóch instrukcji: COMMIT (zakończenie) lub ROLLBACK (wycofanie). Jeśli transakcja kończy się instrukcją ROLLBACK, wszystkie jej instrukcje są anulowane, a baza danych powraca do pierwotnego stanu. Normalna transakcja może być wykonana w jednym z dwóch trybów: READ-WRITE (odczyt-zapis) lub READ-ONLY (tylko do odczytu). Możesz ustawić jeden z następujących poziomów izolacji dla transakcji: SERIAIZABLE (wykonywanie szeregowe), REPEATABLE READ (powtórzony odczyt), READ UNCOMMITED (odczyt niezatwierdzonych danych). Domyślnie obowiązują właściwości ODCZYT-ZAPIS i SERIAIZABLE. Domyślne cechy transakcji SQL są zwykle odpowiednie dla większości użytkowników.

Aplikacja jest tworzona w środowisku Visual Studio 2012 z wykorzystaniem języka programowania C#. Projektowanie oprogramowania zaczyna się od opracowania interfejsu użytkownika.

Główne okno aplikacji powinno wywołać główne funkcje do pracy z aplikacją (Rysunek 1). Do wykonywania tych operacji służy menu. Menu składa się z następujących pozycji: „Tabele”, „Zapytania”, „Raporty”. Każda z tych pozycji zawiera podpunkty. Każda funkcja zostanie wykonana we własnym oknie. Element MenuStrip jest ustawiany w głównym oknie aplikacji, tworzone są opcje menu. W oknie formularza umieszczany jest element PictureBox. Obraz jest ładowany do obszaru elementu. Rysunek musi obejmować cały obszar. Właściwość SizeMode ustawia skalowanie rysunku. W przypadku tej właściwości z listy rozwijanej jest wybierany StretchImage, rysunek jest skalowany tak, aby zajmował całą powierzchnię obiektu.

Aby wyświetlić listę użytkowników, którzy mają uprawnienia do pracy z bazą danych "Biura podróży", instalowana jest kontrolka comboBox. Element comboBox jest powiązany ze źródłem danych. Okno " ODomboBoxZadania”, w którym zaznaczone jest pole wyboru „Użyj elementów powiązanych z danymi”, jeśli to pole wyboru jest zaznaczone, otwierają się opcje wiązania danych. Element comboBox jest powiązany z tabelą „Użytkownicy”, w wierszu „Wyświetlany element członkowski” jest zaznaczone „Nazwisko”. Aby wprowadzić login, ustawiona jest kontrolka textbox1, aby wprowadzić hasło, textBox2. W przypadku elementów textBox1 i textBox2 właściwość UsesSystemPasworChar jest ustawiona na wartość true, która określa, czy tekst w polu tekstowym powinien być domyślnie wyświetlany ze znakami hasła. Ustawione są dwa przyciski poleceń „Zaloguj się” i „Zmień użytkownika”.

Podczas wiązania elementu comboBox z tabelą „Użytkownicy” w kodzie formularza pojawia się procedura obsługi zdarzeń Form1_Load.

private void Form1_Load(object sender, EventArgs e)

this.usersTableAdapter1.Fill(this.biuro podróżyDataSet10.Users);

Podczas uruchamiania aplikacji menu nie jest dostępne. Aby się zalogować, wprowadź swoje dane użytkownika i kliknij przycisk „Zaloguj się”. Po załadowaniu formularza nazwiska użytkowników zawarte w tabeli Użytkownicy są ładowane do kontrolki comboBox1. Do tego modułu obsługi dodawane są wiersze, które sprawiają, że menu, przycisk Zmień użytkownika jest niedostępny, a w elemencie comboBox1 nie jest zaznaczony ani jeden element:

menuStrip1.Enabled = false; comboBox1.SelectedIndex = -1;

button2.Enabled=false;

Rysunek 1. Widok głównego okna aplikacji

Po kliknięciu przycisku „Zaloguj” sprawdzane jest, czy w tabeli „Użytkownicy” znajduje się użytkownik o podanym nazwisku oraz czy login i hasło są wpisane poprawnie. Obszar opisu klasy formularza opisuje parametry przekazane do polecenia sql. Są to trzy parametry: nazwisko użytkownika, jego login i hasło.

private string parfam, parpasw, parlog;

Do przestrzeni nazw dodawany jest następujący wiersz:

przy użyciu System.Data.SqlClient;

// przycisk „Zaloguj się” kliknij moduł obsługi zdarzeń

ciąg sql = "";

string connstr = @"Źródło danych= B302CN-8 \TEST_SQL;Katalog początkowy=Biuro podróży;Zintegrowane zabezpieczenia=True";

SqlDataReader cmReader;

parfam = comboBox1.Text; parlog = pole tekstowe1.Tekst;

SqlConnection conn = new SqlConnection(connstr);

sql = "WYBIERZ Nazwisko, Nazwa użytkownika, Hasło FROM Użytkownicy " +

GDZIE (nazwisko = @fam) i (hasło [e-mail chroniony])";

SqlCommand cmdkod = new SqlCommand(sql, conn);

cmdkod.Parameters.Add(nowy SqlParameter("@fam", SqlDbType.NChar, 25));

cmdkod.Parametry["@fam"].Wartość = parfam;

cmdkod.Parameters.Add(nowy SqlParameter("@pasw", SqlDbType.NChar, 10));

cmdkod.Parameters["@pasw"].Value = parpasw;

cmdkod.Parameters.Add(nowy SqlParameter("@log", SqlDbType.NChar, 15));

cmdkod.Parameters["@log"].Value = parlog;

if (!cmReader.Read())

MessageBox.Show("Błędne hasło!");

cmReader.Zamknij(); poł.Zamknij();

menuStrip1.Enabled = prawda; comboBox1.SelectedIndex = -1;

button1.Enabled=false; button2.Enabled = prawda;

textBox1.Text = ""; textBox1.Enabled = false;

textBox2.Text = ""; textBox2.Enabled = false;

comboBox1.Enabled = fałsz;

cmReader.Zamknij();

private void button2_Click (nadawca obiektu, argumenty zdarzenia e)

menuStrip1.Enabled = false; comboBox1.Enabled = prawda;

textBox1.Enabled = prawda; textBox2.Enabled = prawda;

button1.Enabled = prawda; button2.Enabled=false;

Opis działania obsługi zdarzeń kliknięcia przycisku „Zaloguj”.

Wiersz connstr zawiera ciąg połączenia. Ciąg sql zawiera tekst wygenerowanego zapytania, zaczynając od instrukcji select, po której wyświetlane są wybrane pola z tabel określonych po słowie from.

Program obsługi tworzy nowe wystąpienie obiektu SqlConnection, który zapewnia połączenie z serwerem SQL. Obiekt SqlCommand zawiera polecenie z trzema parametrami do wyszukiwania w tabeli Użytkownicy użytkownika o podanym nazwisku, nazwie użytkownika i haśle. Procedura obsługi button1_Click otwiera SqlConnection. Następnie program obsługi wykonuje polecenie SQL zapisane w obiekcie cmdkod.

cmReader = cmdcode.ExecuteReader();

W wyniku wykonania metody ExecuteReader tworzony jest obiekt klasy SqlDataReader, który umożliwia sekwencyjne odczytywanie wszystkich wierszy wykonania polecenia SQL. Do próbkowania używana jest metoda SqlDataReader. czytać. Jeżeli tabela „Użytkownicy” nie zawiera żadnych rekordów z podanym nazwiskiem, loginem i hasłem, to metoda cmReader.Read() zwróci false. Oznacza to, że wprowadzono nieprawidłową nazwę użytkownika lub hasło. W takim przypadku wyświetlany jest komunikat o wprowadzeniu nieprawidłowych danych, obiekty cmReader i SqlConnection są zamknięte. Jeśli dane użytkownika zostaną wprowadzone poprawnie, menu i przycisk Zmień użytkownika stają się dostępne. Przycisk „Zaloguj się” staje się niedostępny. Elementy textBox1 i textBox2 są wyczyszczone i stają się niedostępne. Element comboBox1 również staje się niedostępny (rysunek 2)

Rysunek 2. Widok okna głównego po zalogowaniu użytkownika

Tabele i wyniki zapytań będą wyświetlane w kontrolkach DataGridView. Głównym celem tych elementów jest łączenie się z tabelami zewnętrznych źródeł danych, przede wszystkim tabel bazodanowych. Dla wygody przeglądania i wprowadzania nowych wpisów, tabele „Pory roku”, „Wycieczki” i „Zezwolenia”, „Płatność” będą wyświetlane dwa w jednym oknie. Każda kontrolka DataGridView jest powiązana z odpowiednią tabelą w bazie danych Travel Agent. W tym oknie wybierana jest tabela „Turyści” (Rysunek 3). Po nawiązaniu połączenia (kliknięcie przycisku „Zakończ”) na formularzu pojawią się komponenty DataSet, BindingSource i TableAdapter. Te komponenty są niewizualne, więc są wyświetlane w dodatkowym panelu. DataSet to wyspecjalizowany obiekt, który zawiera obraz bazy danych. Aby zaimplementować interakcję między DataSet a rzeczywistym źródłem danych, używany jest obiekt typu TableAdapter. Już sama nazwa tego obiektu – adapter, konwerter – wskazuje na jego naturę. TableAdapter zawiera metody Fill i Update, które wykonują transfer danych do przodu i do tyłu między DataSet a tabelą przechowywaną w bazie danych SQL Server. Metoda Fiil wypełnia DataSet danymi z SQL Server, a Update aktualizuje bazę danych SQL Server danymi z lokalnego DataSet. Składnik BindingSource ułatwia powiązanie kontrolek w formularzu z danymi. Główną właściwością składnika BindingSource jest właściwość Data Source, która wskazuje na źródło danych.

Po zakończeniu łączenia tabel ze źródłami danych w kodzie programu formularza pojawia się procedura obsługi zdarzeń Form2_Load.

private void Form2_Load(object sender, EventArgs e)

this.touristsTableAdapter.Fill(this.biuro podróżyDataSet9.Tourists);

Po załadowaniu formularza dane zawarte w tabeli „Turyści” są wyświetlane w kontrolce DataGridView w oknie formularza Form2. Możesz wprowadzać zmiany w tabeli i dodawać nowe rekordy. Po wprowadzeniu zmian kliknij przycisk „Zapisz turystów”. Obsługa zdarzenia dla przycisku „Zapisz turystów” kliknij:

private void button1_Click (nadawca obiektu, argumenty zdarzenia e)

seasonsTableAdapter.Update(biuro podróżyDataSet9);

MessageBox.Show("Zapisane dane");

Rysunek 3. Widok okna z tabelą „Turyści”

Każde żądanie jest wyświetlane w osobnym oknie. W oknie Formularz1 do menu „Wnioski” dodawana jest nowa pozycja o nazwie żądania. Jeśli zapytanie nie ma parametrów, formant DataGridView jest instalowany w oknie formularza w celu wyświetlania wyników zapytania i powiązania z odpowiednią procedurą lub funkcją bazy danych.

W tym artykule przedstawiono kilka metod tworzenia aplikacji współpracujących z bazami danych, sposób organizowania dostępu do pracy z ograniczonym kręgiem osób, sposoby integracji aplikacji Visual C# z serwerem DBMS Microsoft SQL Server 2012. W przypadku korzystania z Visual C# języka programowania z SQL, możesz tworzyć potężne aplikacje z szeroką gamą funkcji. Główną siłą SQL jest wydobywanie danych. Bez względu na to, ile wierszy znajduje się w tabeli, można je pobrać za pomocą jednej instrukcji SELECT. Jednocześnie główną wadą języka SQL jest jego słabo rozwinięty interfejs użytkownika. Używając języków proceduralnych, możesz tworzyć wygodne interfejsy do wprowadzania i przeglądania danych. Najpopularniejszą metodą łączenia SQL z językami proceduralnymi jest wstrzykiwanie kodu SQL. Instrukcja SQL jest wstawiana w żądanym miejscu w programie proceduralnym. Informacje muszą być przekazywane między programem napisanym w języku proceduralnym a kodem SQL. W tym celu używane są zmienne bazowe. Aby SQL rozpoznał te zmienne, należy je zadeklarować. Zmienne są deklarowane w obszarze opisu klasy formularza przed opisem kodu programu. W kodzie nowo utworzone wystąpienie obiektu SqlConnection zapewnia połączenie z serwerem SQL. Obiekt SqlCommand zapewnia wykonanie wbudowanego polecenia SQL.

Bibliografia:

  1. Allena Taylora. SQL dla manekinów, wydanie 8.: Per. z angielskiego. - M .: LLC „I.D. Williams”, 2014. - 416 s.
  2. Gainanova R.Sz. Rozwój aplikacji do pracy z bazami danych MS SQL Server 2012 // Nauki podstawowe i stosowane dzisiaj: Materiały z XI międzynarodowej konferencji praktycznej (10-11 kwietnia 2017 Noth Charleston, USA), tom 3 - s. 34-41.
  3. Frolov A.V., Frolov G.V. Projekt wizualny aplikacji C#. - M.: KUDRITS-OBRAZ, 2003, - 512s.

Prawie każda organizacja posiada własną bazę danych. Dlaczego nawet strony internetowe używają ich, aby praca z informacjami była łatwiejsza i prostsza. Rzeczywiście, umożliwiają bezproblemowe wykonywanie obliczeń, szybkie znajdowanie potrzebnych danych i ogólnie po prostu porządkują dowolne informacje.

Często w ich tworzenie zaangażowani są programiści, ponieważ jest to złożony proces, którego uczy się na wyższych uczelniach. Istnieje również wiele lekcji, kursów i pakietów oprogramowania do tworzenia oprogramowania bazodanowego.Jest naprawdę duża różnorodność, łatwo się pomylić. W tym artykule skupimy się na niektórych głównych programach do tworzenia baz danych.

O SQL

SQL to język programowania używany do tworzenia baz danych. Jeśli zainstalujesz go na komputerze i zaczniesz tworzyć bazę danych, nie będzie to zbyt wygodne. Wynika to z faktu, że sam SQL nie posiada żadnej powłoki graficznej, a zapytania do bazy danych muszą być w ogóle wysyłane z wiersza poleceń. Z tego powodu pojawiły się różnego rodzaju programy ułatwiające tworzenie baz danych. Jednak nauka podstaw tego języka nadal jest tego warta. Nagle musisz złożyć jakieś żądanie, ale program nie działa poprawnie.

Microsoft Access

Ten program do tworzenia baz danych jest zdecydowanie znany wielu. W końcu jest dostarczany z pakietem Microsoft Office. Program ten jest jednym z najłatwiejszych do opanowania, ponieważ znajomość języka programowania SQL praktycznie nie jest tam potrzebna. Możesz tylko wskazać, które zapytanie wykonać, a sam program wykona zapytanie SQL.

O trafności programu. Do tej pory bazy danych wielu organizacji były tworzone przy użyciu Microsoft Access. Rzeczywiście, sam program jest bardzo prosty, jest intuicyjny interfejs. Co więcej, podstaw pracy w Access uczy się nawet w szkole i na kursach w szkołach podstawowych!

PhpMyAdmin

Access to oczywiście dobry program, ale jeśli potrzebujesz bazy danych dla witryny, to sobie nie poradzi. Wtedy na ratunek przychodzi PhpMyAdmin. Jest to bardzo przydatny program do tworzenia baz danych. Instalacja na komputerze zajmuje trochę czasu, a podczas instalacji łatwo coś złego zrobić i nie zadziała. Dlatego podczas instalacji tego programu do tworzenia baz danych należy wyraźnie postępować zgodnie z instrukcjami. Ale kolejnym plusem PhpMyAdmin jest to, że można go również uzyskać przez Internet w formie strony internetowej! Na przykład masz witrynę internetową obsługiwaną przez WordPress. Będzie miał bazę danych. A jeśli masz witrynę na dobrym hostingu, najprawdopodobniej praca z bazami danych będzie wykonywana za pośrednictwem PhpMyAdmin, a dostęp do niej będzie możliwy za pośrednictwem panelu sterowania hostingu.

Kolejny program do tworzenia baz danych. Jest bezpłatny, ale jest też płatna wersja z lepszymi funkcjami. W tym programie tworzenie łączy z tabelami jest łatwe i ogólnie po prostu wygodnie się z nim pracuje. Plusem jest też możliwość pokazania bazy w formie graficznej. Większość osób pracujących z bazami danych preferuje ten konkretny program. W zasadzie PhpMyAdmin nie jest gorszy pod względem możliwości, ale nadal jest bardziej zaprojektowany do pracy z bazami danych witryn.

W tym artykule rozważono główne programy do tworzenia baz danych. W rzeczywistości jest ich sporo, więc każdy wybiera narzędzie dla siebie, ale jeśli dopiero się przyzwyczajasz i chcesz zgłębić ten obszar, to zaleca się pracę z MySQL WorkBench. Po zapoznaniu się z podstawami SQL nie będzie już znaczącej różnicy, gdzie pracować, ponieważ zapytania są wszędzie takie same. Wygodne jest również to, że po utworzeniu bazy danych w jednym programie można ją otworzyć za pomocą innego oprogramowania, które również jest przeznaczone do pracy z bazą danych. Tworząc oprogramowanie z bazą danych, nie można się bez tej wiedzy obejść. Co więcej, po opanowaniu języka SQL możesz nawet stworzyć własne oprogramowanie do tworzenia i edycji baz danych.