..


Linki sponsorowane

Zarządzanie połączeniami z bazami danych z ADO.NET

W poprzedniej lekcji zobaczyliśmy, jak powiązać zbiór statycznych (znany również jako in-memory) do różnych kontroli po stronie serwera. Mimo, że tego typu działania mogą być przydatne w pewnych kontekstach, jednak często jest konieczność powiązania kontroli różnych kolekcji przedmiotów z innych źródeł, często z bazy danych.

Poza tym bibliotek klas do tworzenia aplikacji desktopowych (Windows Forms) oraz zarządzania żądań HTTP (ASP.NET). NET Framework zawiera także bibliotekę, która obsługuje połączenia do wielu różnych baz danych i jest o nazwie ADO.NET (Active Data Objects. NET). Technologia ta oparta jest na trzy główne funkcje: połączenie z bazą danych, kwerendy baz danych i zarządzanie wynikami.

Jeśli chcesz współpracować z bazą danych należy podłączyć do niego. Połączenie wymaga określenie lokalizacji bazy danych, ale może również zwrócić się do zarządzania bezpieczeństwem i innych spoczywa złożone. Wszystkie te elementy są zarządzane w ramach procesu połączenia z bazą danych. Informacje o połączeniu jest przekazywany zazwyczaj jako ciąg znaków, których zawartość służy do ustawiania różnych parametrów.

Podczas gdy w przeszłości trzeba było ręcznie pisać kod dostępu do bazy danych za pomocą ADO.NET, określając rodzaj bazy danych, którą chcesz się połączyć i automatycznie ustawić właściwości są odpowiednie dla tego typu połączenia.

Istnieje kilka typów baz danych obsługiwane:

  • Danych ODBC Provider
  • OLE DB Data Provider
  • OracleClient Data Provider
  • SqlClient Data Provider
  • SQL Server CE Data Provider
Tego typu określone w wyżej wymienionym pliku machine.config prezent





 <configuration>

 





 <configSections>

 





 Nazwa sekcji <= "System.Data.Odbc"

 





 type = "







 System.Data.Common.DbProviderConfigurationHandler, ..."/>

 





 Nazwa sekcji <= "System.Data.OleDb" type = "







 System.Data.Common.DbProviderConfigurationHandler, ..."/>

 





 Nazwa sekcji <= "System.Data.OracleClient" type = "







 System.Data.Common.DbProviderConfigurationHandler, ..."/>

 





 Nazwa sekcji <= "System.Data.SqlClient" type = "







 System.Data.Common.DbProviderConfigurationHandler, ...

 



 "/>

 





 <configSections />

 





 <system.data>

 





 <DbProviderFactories>

 





 <Dodaj name = "Microsoft SQL Server Compact Data Provider" niezmienne = "







 System.Data.SqlServerCe.3.5 "

 





 = "System.Data.SqlServerCe.SqlCeProviderFactory ..." typ />

 





 </ DbProviderFactories>

 





 </ System.Data> <







 / Configuration>>



Aby utworzyć połączenie z bazą danych musi zatem wykorzystać prawo element. Dzięki dostępności połączenia można użyć aby uzyskać dostęp do bazy danych. Na przykład, jeśli naszym lokalnym komputera obsługującego bazy danych SQL Server o nazwie DB_TEST musi wejść w ewentualnej naszej aplikacji następujący ciąg połączenia






 <configuration>

 





 <connectionStrings>

 





 <Dodaj name = "TEST"

 





 connectionString = "server = (local);







 Integrated Security = SSPI; bazy danych DB_TEST = "/>

 





 </ ConnectionStrings>







 </ Configuration>



W tym momencie można otworzyć połączenie i mają bazy danych za wykonanie operacji, które chcemy.

Większość baz danych obsługuje języka SQL (Structured Query Language) do pytania, zmiany, nowe wstawienia i usunięcia danych. Polecenia te zazwyczaj mają postać podobną do następującej

 



 SELECT * FROM Klienci WHERE Nazwisko = 'Smith'

 
gdzie klientów jest tabela w bazie danych. To polecenie pobiera listę klientów, których nazwisko jest Smith. Aby uzyskać te dane w naszym stosowania piszemy następujący kod





 TestDBApp klasy







 {



  



 static void Main ()



  



 {



    



 DbProviderFactory DbProviderFactory DbProviderFactories.GetFactory = ("System.Data.SqlClient");



    



 za pomocą (DbConnection conn dbProviderFactory.CreateConnection = ())



    



 {



      



 string s = ConfigurationManager.ConnectionStrings ["Test"] ConnectionString.;



      



 conn.ConnectionString = s;



      



 conn.Open ();



      



 DbCommand cmd = conn.CreateCommand ();



      



 cmd.CommandText = "SELECT * FROM Klienci WHERE nazwisko = 'Kowalski'";



      



 DbDataReader czytelnik = cmd.ExecuteReader ();



      



 / / Użyj czytelnika do dostępu do danych



    



 }



  



 }







 }



Polecenia (cmd) przy użyciu ExecuteReader metody powoduje wysyłanie zapytań do bazy danych naszych. Wyniki w tym przypadku uzyskuje się poprzez instancję klasy IDataReader, ale można także zarządzać nimi za pośrednictwem innej klasy o nazwie DataSet.

IDataReader jest wskazana do wykonywania iteracji na wyniki kwerendy. W szczególności, naraża metody Read, że przechodzi przez wiersze jeden po drugim tak niekorzystnej sytuacji sequenziale.Lo jest to, że podczas skanowania nie jest możliwy powrót do poprzedniej linii, a także zwrócone wiersze są tylko do odczytu, więc nie można zmienić zawartości.

Alternatywą jest IDataReader do DataSet, który umożliwia zarządzanie zestawem odłączenie danych. ADO.NET jest przeznaczony przede wszystkim do obsługi aplikacji bardzo skalowalne i jeden z głównych problemów skalowalności jest ograniczenie liczby połączeń do bazy danych. Baza danych w rzeczywistości często ma ograniczenia liczby połączeń jednocześnie aktywne w danym czasie i jeśli wszystkie te używane są dozwolone operacje są spowolnione. Jeżeli liczba użytkowników systemu jest w przybliżeniu równa ilości połączeń w tym samym czasie może być przyczyną problemów nie dotyczy, ale jeśli liczba użytkowników wzrosła wydajność systemu może ponieść dramatycznie.

Aby rozwiązać te problemy ADO.NET zapewnia klasy DataSet, zaprojektowany w celu zapewnienia swego rodzaju kopię bazy danych (lub jego część) używane przez aplikację. Korzyści jest wiele, po prostu uważam, że w ciągu np. zestawu danych można wprowadzić nowe dane, aktualizować lub usuwać istniejące, a następnie potwierdzić wszystkie te operacje, które są wykonywane w oderwanych od trybu podłączenia do bazy danych przez krótki okres czasu.

Klasa DataSet zawiera tablicę obiektów DataTable, które są wypełniane przez DataAdapter. Elementy te są wywoływane podczas ładowania danych z bazy danych bezpośrednio do DataTable, a następnie możesz pracować na tych danych lokalnych, interakcji z bazy danych tylko po potwierdzeniu zmiany w nich.

Tak więc za pomocą obiektu DataSet możemy uzyskać dostęp do każdego elementu w tak całkowicie losowy, w przeciwieństwie do tego, co widzieliśmy na DbDataReader komponentu.

Pomoc z Visual Studio ASP.Net
E-Learning
ASP (Advanced) ASP (Advanced)
Pełny kurs tworzenia dynamicznych stron internetowych. Od 39 €.
ASP.NET (Kurs) ASP.NET (Kurs)
Pełny kurs do tworzenia aplikacji WWW od 49 €.
SQL i bazy danych (pole) SQL i bazy danych (pole)
Tworzenie i zarządzanie relacyjnymi bazami danych. Od 39 €.
Linki sponsorowane