..
In de vorige les zagen we hoe een verzameling van statische (ook bekend als in-memory) binden aan verschillende server side controles. Hoewel dit type van operatie kan nuttig zijn in bepaalde contexten, maar vaak komt de behoefte om controle te binden aan de verschillende collecties van items uit andere bronnen, vaak van een database.
In aanvulling op met class libraries voor het ontwikkelen van desktop applicaties (Windows Forms) en het beheer van HTTP verzoeken (ASP.NET), het. NET Framework bevat ook een bibliotheek die verbinding ondersteunt een grote verscheidenheid van databases en is genaamd ADO.NET (Active Data Objects. NET). Deze technologie is gebaseerd op drie belangrijke functies: verbinding met een database, queries op een database, en de resultaten management.
Als u wilt communiceren met een database, moet u verbinding te maken. De verbinding vereist de identificatie van de locatie van de database, maar kan ook vragen om security management en andere complexe rust. Al deze elementen worden beheerd als onderdeel van het proces van verbinding met een database. De verbinding informatie is meestal doorgegeven als een string, waarvan de inhoud wordt gebruikt voor het instellen van diverse parameters.
In het verleden moest u handmatig code schrijven om een database via ADO.NET toegang door het type van de database die u wilt aansluiten en automatisch de eigenschappen zijn geschikt voor dit type verbinding.
Er zijn verschillende types van ondersteunde databases:
<configuration> <configSections> <Sectie name = "System.Data.Odbc" type = " System.Data.Common.DbProviderConfigurationHandler, ..."/> <Sectie name = "System.Data.OleDb" type = " System.Data.Common.DbProviderConfigurationHandler, ..."/> <Sectie name = "System.Data.OracleClient" type = " System.Data.Common.DbProviderConfigurationHandler, ..."/> <Sectie name = "System.Data.SqlClient" type = " System.Data.Common.DbProviderConfigurationHandler, ... "/> <configSections /> <system.data> <DbProviderFactories> <Toevoegen name = "Microsoft SQL Server Compact Data Provider" invariant = " System.Data.SqlServerCe.3.5 " type = "System.Data.SqlServerCe.SqlCeProviderFactory ..." /> </ DbProviderFactories> </ System.Data> < / Configuratie>>
Voor het maken van de database verbinding moet daarom gebruik maken van de juiste component. Met de beschikbaarheid van een verbinding die u vervolgens kunt gebruiken om toegang tot de database. Bijvoorbeeld, als onze lokale computer die als host een database van SQL Server genoemd DB_TEST moet invoeren in een uiteindelijke onze toepassing de volgende connectie string
<configuration> <connectionStrings> <Toevoegen name = "TEST" ConnectionString = "server = (lokaal); Integrated Security = SSPI; DB_TEST-database = "/> </ ConnectionStrings> </ Configuratie>Op dit punt kunt u openen van de verbinding en de database voor de uitvoering van de werkzaamheden die we willen hebben.
De meeste databases ondersteunen de SQL-taal (Structured Query Language) om queries te maken, veranderingen, nieuwe toevoegingen en verwijderingen van gegevens. Deze commando's hebben meestal een vorm die vergelijkbaar is met de volgende
SELECT * FROM klanten WHERE Achternaam = 'Smith'waarbij de Klant is een tabel in een database. Dit commando neemt een lijst van klanten wier achternaam is Smith. Voor het verkrijgen van deze gegevens binnen onze toepassing van een schrijven we de volgende code
TestDBApp klasse
{
static void Main ()
{
DbProviderFactory DbProviderFactory DbProviderFactories.GetFactory = ("System.Data.SqlClient");
met behulp van (DbConnection conn = dbProviderFactory.CreateConnection ())
{
string s = ConfigurationManager.ConnectionStrings ["Test"] ConnectionString.;
conn.ConnectionString = s;
conn.Open ();
DbCommand cmd = conn.CreateCommand ();
cmd.CommandText = "SELECT * FROM klanten WHERE Achternaam = 'Smith'";
DbDataReader reader = cmd.ExecuteReader ();
/ / Gebruik de lezer toegang tot de gegevens
}
}
}
Het commando (cmd) via de ExecuteReader methode zorgt ervoor dat het versturen van onze database queries.
De resultaten zijn in dit geval verkregen door een instantie van de IDataReader klasse, maar u kunt ze ook beheren via een andere klasse met de naam DataSet.
De IDataReader is geïndiceerd voor iteraties uit te voeren op de resultaten van een zoekopdracht. In het bijzonder belicht de Read-methode, dat doorloopt de rijen een voor een tijd, zodat sequenziale.Lo nadeel is dat bij het scannen niet mogelijk is om terug te keren naar een vorige lijn en ook weer rijen zijn alleen-lezen, zodat je niet kunt veranderen de inhoud.
Het alternatief is de IDataReader om DataSet, waarbij het beheer van een reeks van losse gegevens mogelijk maakt. ADO.NET is voornamelijk ontworpen voor toepassingen zeer schaalbaar en een van de belangrijkste problemen van schaalbaarheid te ondersteunen is de limiet aan het aantal verbindingen met een database. De database in feite hebben vaak een limiet aan het aantal verbindingen tegelijkertijd actief zijn op een gegeven moment en als alle die in gebruik zijn toegestane operaties worden afgeremd. Als het aantal gebruikers van het systeem is ongeveer gelijk aan het aantal aansluitingen beschikbaar zijn op hetzelfde moment kan leiden tot problemen niet relevant, maar als het aantal gebruikers is toegenomen prestaties van het systeem kan drastisch lijden.
Om deze problemen ADO.NET biedt de DataSet klasse, ontworpen om een soort van kopie van de database (of een gedeelte daarvan) wordt gebruikt door een toepassing te voorzien. De voordelen zijn legio, denk maar aan dat er binnen een instantie van de dataset kunt u nieuwe gegevens, bijwerken of verwijderen van bestaande, en bevestig al deze handelingen die in verbinding mode uitgevoerd door de verbinding met de database voor een korte periode van tijd.
De DataSet klasse bevat een array van DataTable objecten, die worden bevolkt door de DataAdapter. Deze elementen worden aangeroepen bij het laden van gegevens uit de database direct in de DataTable en dan kun je werken aan deze lokale gegevens, interactie met de database alleen wanneer u de wijzigingen te bevestigen.
Dus het gebruik van de DataSet kunnen we elk element in het toegang zo volledig willekeurig, in tegenstelling tot wat we zagen voor de component DbDataReader.
| |
ASP (Advanced)
Volledige cursus voor het maken van dynamische websites. Van 39 €. |
| |
ASP.NET (Cursus)
Volledige cursus voor het bouwen van webapplicaties van 49 €. |
| |
SQL en Database (Cursus)
Maken en beheren van relationele databases. Van 39 €. |