# ADO.NET

ActiveX Data Objects for .NET, afgekort naar ADO.NET, is de opvolger van de eerdere uitgave van Microsoft ADO. ADO.NET is verbonden aan het .NET-framework en biedt, net als zijn voorganger, een programmeerinterface om (web-)applicaties in staat te stellen met willekeurige databases te communiceren.
ADO.NET is niet alleen beschikbaar onder het Microsoft.net framework, maar ook onder het Mono (ontwikkelplatform).
ADO.NET is bedoeld om een standaard interface voor data access te definiëren. De ADO.NET namespace System.Data binnen het .NET-raamwerk bevat onder andere interfaces als Connection en Command. Iedere technologie (SQL Server, Oracle, XML) kan zijn eigen implementatie geven aan deze interfaces. Met de komst van ADO.NET kan de keuze voor een data access technologie configureerbaar gemaakt worden.
Het .NET-raamwerk voorziet in de communicatie naar vier verschillende ADO.NET connectors: Microsoft SQL Server 7.0 en hoger, OLE DB, ODBC en Oracle. De laatste twee zijn pas ingebouwd vanaf .NET framework v1.1. Het .NET-raamwerk implementeert de programmeerinterface door verschillende klassen aan te bieden, die een applicatieprogrammeur kan gebruiken voor communicatie met databases. .NET maakt nu onderscheid tussen provider-specifieke klassen en provider-onafhankelijke klassen. De eerste groep klassen is geoptimaliseerd voor een bepaalde database server, zoals Microsoft SQL-server.
Sinds november 2005 is ADO.NET 2.0 beschikbaar in het .NET Framework.

## Werking

ADO.NET databevattende componenten kunnen binnen een applicatie gebruikt worden zonder een voortdurtend actieve connectie met één of meer databases open te hoeven houden, in het Engels "disconnected". Continu actieve connecties zorgen voor een zeer zware belasting van database servers. Het nadeel is dat de applicatie die ADO.NET gebruikt genoeg geheugen moet hebben om vlot te blijven werken.
Om deze 'offline' manier van werken te bewerkstelligen zijn er objecten die een actieve connectie naar de database kunnen aanmaken (van de 'classes' connection, command, datareader) en objecten die voor de opslag van de gegevens zorgen in het geheugen (van de 'classes' Dataset, dataTable). De TableAdapter is een snelle manier om een DataTable te vullen met gegevens uit een database. De DataView slaat geen gegevens op, maar is enkel een manier om gegevens in een DataTable te raadplegen.

## Objecten

Er zijn enkele belangrijke objecten opgenomen in ADO.NET:
* Connection - maakt het contact met een gegevensbron.
* Command - maakt commando's en query's naar een gegevensbron.
* DataReader - leest stromen van tekst uit de gegevensbron.
* DataSet - een dataset is een verzameling van DataTable-objecten. Deze DataTable-objecten kunnen onderling gelinkt zijn met DataRelation-objecten. Een Dataset wordt ook dikwijls omschreven als een 'offline' weergave van een database.
* DataTable - een tabel in het geheugen zoals deze op een database zou voorkomen met rijen en kolommen. Als de gegevens worden geraadpleegd van een DataTable wordt er automatisch een standaard DataView opgeroepen.
* DataView - maakt het mogelijk om in een DataTable te sorteren en filteren.
* DataAdapter - zorgt voor een vertaling van verzoeken vanuit de ADO.NET-laag naar de database en omgekeerd.