Top 50 ADO.NET-interviewvragen en -antwoorden (2026)

ADO.NET interviewvragen en -antwoorden

Een goede voorbereiding op een ADO.NET-interview vereist inzicht in wat interviewers belangrijk vinden. Door ADO.NET-interviewvragen te bespreken, ontdek je de diepgang, het probleemoplossend vermogen en het begrip van data-toegangsconcepten die werkgevers actief beoordelen.

Het beheersen van deze vragen opent deuren naar functies binnen bedrijfsontwikkeling, data-analyse en back-end systemen. Kandidaten tonen technische expertise, relevante werkervaring en domeinkennis opgedaan in het vakgebied. Van starters tot ervaren professionals, managers en teamleiders waarderen praktische analysevaardigheden, de aansluiting van vaardigheden en het vermogen om complexe technische discussies te voeren.
Lees meer ...

๐Ÿ‘‰ Gratis PDF-download: ADO.NET-interviewvragen en -antwoorden

De meest gestelde ADO.NET-interviewvragen en -antwoorden

1) Wat is ADO.NET en welke rol speelt het in .NET-applicaties?

ADO.NET (ActiveX Data Objects .NET) is een technologie voor gegevenstoegang in de Microsoft Het .NET Framework wordt gebruikt voor interactie met databases en andere gegevensbronnen, zoals XML-bestanden. Het biedt een reeks klassen en interfaces die dit mogelijk maken. Verbinding maken met een gegevensbron, query's of opdrachten uitvoeren, en gegevens ophalen en bewerken.ADO.NET ondersteunt beide verbonden (realtime databaseverbinding) en losgekoppeld (toegang tot gegevens in het geheugen) modellen, waardoor het flexibel is voor een breed scala aan toepassingsvereisten.


2) Wat zijn de belangrijkste onderdelen van ADO.NET?

De architectuur van ADO.NET bestaat uit verschillende belangrijke onderdelen. componenten die samenwerken om toegang tot gegevens mogelijk te maken:

  • Aansluiting: Legt een verbinding tot stand tussen een .NET-applicatie en de gegevensbron.
  • Commando: Voert SQL-query's, opgeslagen procedures en andere opdrachten uit.
  • DataReader: Biedt snelle, alleen-voorwaartse, alleen-lezen toegang tot gegevens via een verbonden model.
  • DataAdapter: Fungeert als een brug tussen een gegevensbron en een dataset voor offline toegang tot gegevens.
  • Gegevensset: Gegevens worden in het geheugen opgeslagen en kunnen meerdere tabellen en schema-informatie bevatten.
  • DataTabel / DataRij / DataKolom: Geef de tabelstructuur en de gegevens binnen een DataSet weer.

3) Leg het verschil uit tussen verbonden en niet-verbonden gegevenstoegang.

ADO.NET ondersteunt twee verschillende modellen:

  • Verbonden model:
    • Gebruikt objecten zoals Verbinding en gegevenslezer.
    • De applicatie moet tijdens het ophalen van gegevens een open verbinding met de database behouden.
    • Ideaal voor realtime, alleen-lezen bewerkingen waarbij directe interactie met de database vereist is.
  • Losgekoppeld model:
    • maakt gebruik DataAdapter en DataSet.
    • De gegevens worden in het geheugen geladen en de databaseverbinding kan worden gesloten.
    • Maakt het mogelijk om gegevens offline te bewerken en later te synchroniseren met de database. Deze aanpak verbetert de schaalbaarheid en vermindert de belasting van de databaseserver.

4) Wat is het verschil tussen een DataReader en een DataSet?

Aspect Gegevenslezer DataSet
Aansluiting Vereist een open databaseverbinding. Werkt losgekoppeld
Toegang tot data Alleen-doorsturen, alleen-lezen Ondersteunt manipulatie in het geheugen.
Prestaties High speed Lager dan DataReader vanwege overhead in het geheugen
Use Case Snelle toegang tot grote resultaten Complexe dataverwerking en offline werken

A Gegevenslezer is efficiรซnt en lichtgewicht, ideaal voor het snel uitlezen van gegevens. DataSetAan de andere kant is het handig wanneer je met meerdere tabellen, relaties en in-memory data-bewerkingen moet werken.


5) Wat is verbinding? Pooling in ADO.NET?

Aansluiting Pooling is een prestatiefunctie die hergebruikt open databaseverbindingen In plaats van herhaaldelijk verbindingen te openen en te sluiten, wordt een verbinding die gesloten is, teruggegeven aan een pool die beheerd wordt door ADO.NET. Latere verzoeken gebruiken een bestaande verbinding uit de pool, waardoor de overhead van het aanmaken van verbindingen aanzienlijk wordt verminderd en de prestaties in omgevingen met een hoge belasting worden verbeterd.


6) Wat zijn dataproviders in ADO.NET?

Gegevensaanbieders zijn categorieรซn die Maak communicatie mogelijk tussen uw applicatie en specifieke soorten gegevensbronnen.De meest gebruikte gegevensproviders in ADO.NET zijn onder andere:

  • SqlClient: Bij Microsoft SQL Server.
  • OleDb: Voor databases die toegankelijk zijn via OLE DB (bijvoorbeeld MS Access).
  • Odbc: Voor databases via ODBC-stuurprogramma's.
  • OracleOpdrachtgever: Bij Oracle databases (verouderd in nieuwere .NET-versies). Deze providers bevatten hun eigen Connection-, Command-, DataReader- en DataAdapter-klassen, die elk geoptimaliseerd zijn voor de betreffende bron.

7) Hoe voer je SQL-instructies uit in ADO.NET?

In ADO.NET worden SQL-opdrachten uitgevoerd met behulp van de Commando-objectAfhankelijk van het type bewerking dat u wilt uitvoeren, gebruikt u verschillende uitvoeringsmethoden:

  • ExecuteReader(): Voor SELECT-query's die resultaatsets retourneren.
  • ExecuteNonQuery(): Voor INSERT, UPDATE, DELETE (geeft het aantal getroffen rijen terug).
  • ExecuteScalar(): Voor query's die รฉรฉn enkele waarde retourneren (bijv. COUNT).
  • ExecuteXmlReader(): Voor query's die XML-gegevens retourneren. Het gebruik van de juiste uitvoeringsmethode garandeert optimale prestaties en een correcte verwerking van de resultaten.

8) Wat is het doel van een Command-object?

De Commando-object in ADO.NET is verantwoordelijk voor SQL-instructies of opgeslagen procedures uitvoeren Het object maakt gebruik van een databaseverbinding en voert opdrachten uit zoals het ophalen van gegevens, het wijzigen van records of het uitvoeren van complexe bewerkingen met behulp van opgeslagen procedures. Het Command-object kan worden geconfigureerd met parameters ter ondersteuning van beveiligde query's en om SQL-injectie te voorkomen.


9) Wat zijn geparameteriseerde query's en waarom zijn ze belangrijk?

A geparameteriseerde query is een SQL-instructie waarbij plaatshouders (parameters) worden gebruikt in plaats van waarden direct in de SQL-string vast te leggen. Deze aanpak:

  • Voorkomt SQL Injection door gebruikersinvoer te behandelen als data, en niet als uitvoerbare code.
  • Verbetert de herbruikbaarheid en onderhoudbaarheid van SQL-opdrachten.

In het Command-object worden parameters afzonderlijk toegevoegd, wat zorgt voor een veiligere en efficiรซntere uitvoering.


10) Hoe werken transacties in ADO.NET?

Een transactie in ADO.NET zorgt ervoor dat een De reeks bewerkingen wordt als รฉรฉn geheel uitgevoerd.Je start een transactie met behulp van het Connection-object, voert meerdere opdrachten binnen die transactie uit en vervolgens... Plegen (alle wijzigingen opslaan) of Rollback (wijzigingen ongedaan maken) op basis van succes of mislukking. Dit garandeert de data-integriteit, met name in scenario's zoals geldtransfers, waarbij gedeeltelijke updates tot inconsistenties kunnen leiden.


11) Wat is de rol van de DataAdapter in ADO.NET?

A DataAdapter fungeert als een brug tussen een dataset en de gegevensbron. Het gebruikt Commando-objecten (Selecteren, Invoegen, Bijwerken, Verwijderen) om gegevens uit de database op te halen in een DataSet en om wijzigingen terug te synchroniseren met de database. De DataAdapter beheert het automatisch openen en sluiten van de verbinding bij het vullen of bijwerken van gegevens.

De belangrijkste methoden zijn onder meer:

  • Vullen() โ€“ Vult de dataset met gegevens uit de gegevensbron.
  • Update() โ€“ Verzendt wijzigingen vanuit de dataset terug naar de database.

Deze aanpak staat centraal in ADO.NET. losgekoppelde architectuurwaardoor applicaties gegevens offline kunnen bewerken en wijzigingen later efficiรซnt kunnen opslaan.


12) Leg het verschil uit tussen ExecuteReader(), ExecuteScalar() en ExecuteNonQuery().

De Commando-object ADO.NET biedt drie belangrijke methoden voor het uitvoeren van SQL-instructies:

Methode Retourneren Typisch gebruik Voorbeeld
UitvoerenReader() Gegevenslezer SELECT-instructies Leesverslagen
ExecuteScalar() Enkele waarde Aggregatiequery's (AANTAL, SOM) Het totale aantal rijen ophalen
ExecuteNonQuery() Geheel getal (betrokken rijen) INVOEGEN, UPDATEN, VERWIJDEREN Gegevens wijzigen

Voorbeeld:

SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Employees", con);
int count = (int)cmd.ExecuteScalar();

Hier ExecuteScalar() Haalt efficiรซnt รฉรฉn enkele waarde op zonder volledige datasets te laden, waardoor de prestaties verbeteren.


13) Waarvoor dient de DataView-klasse in ADO.NET?

De Gegevensweergave klasse biedt een een aangepaste, dynamische weergave van gegevens binnen een DataTableHet stelt ontwikkelaars in staat om sorteren, filteren of zoeken DataView geeft gegevens weer zonder de onderliggende tabel aan te passen. DataView is handig voor het weergeven van gefilterde gegevens in UI-componenten zoals DataGridView of ListView.

Bijvoorbeeld:

DataView view = new DataView(dataTable);
view.RowFilter = "Department = 'IT'";
view.Sort = "EmployeeName ASC";

De gefilterde weergave kan vervolgens direct aan UI-elementen worden gekoppeld, waardoor de prestaties verbeteren doordat meerdere databaseaanroepen worden vermeden.


14) Wat zijn de belangrijkste verschillen tussen ADO en ADO.NET?

Kenmerk ADO ADO.NET
Architectuur aangesloten Verbonden en niet verbonden
Data opslag Recordset Dataset (op XML gebaseerd)
Schaalbaarheid Laag Hoge
XML-ondersteuning Beperkt Vol
Toegang tot data COM-gebaseerd Managed Code (.NETTO)

Uitleg: ADO.NET biedt een een rijker, schaalbaarder en XML-geรฏntegreerd model dan traditionele ADO. Het is geoptimaliseerd voor gedistribueerde en webgebaseerde applicaties en ondersteunt losgekoppelde gegevensbewerkingen en XML-serialisatie voor interoperabiliteit.


15) Hoe gaat ADO.NET om met gelijktijdigheidsproblemen?

Gelijktijdigheidsconflicten treden op wanneer meerdere gebruikers tegelijkertijd dezelfde gegevens wijzigen. ADO.NET biedt meerdere strategieรซn om gelijktijdigheid te beheren:

  1. Optimistische gelijktijdigheid: Er wordt aangenomen dat de gegevens ongewijzigd blijven tot de update. De DataAdapter controleert de oorspronkelijke waarden voordat de updates worden doorgevoerd.
  2. Pessimistische gelijktijdigheid: Gegevens worden vergrendeld tijdens het lezen of wijzigen, waardoor gelijktijdige toegang wordt voorkomen.

In de meeste praktijkgerichte .NET-toepassingen, optimistische gelijktijdigheid wordt geprefereerd vanwege de prestatie- en schaalbaarheidsvoordelen.


16) Wat is de betekenis van DataRelation in ADO.NET?

De DataRelation object definieert een ouder-kindrelatie tussen twee DataTables Binnen een DataSet maakt het navigatie tussen gerelateerde records mogelijk, vergelijkbaar met foreign key-beperkingen in een database.

Voorbeeld:

DataRelation rel = new DataRelation("DeptEmp",
    ds.Tables["Department"].Columns["DeptID"],
    ds.Tables["Employee"].Columns["DeptID"]);
ds.Relations.Add(rel);

Dit maakt hiรซrarchische gegevensdoorloop mogelijk met behulp van GetChildRows() en GetParentRow()waardoor het zeer geschikt is voor het weergeven van relationele structuren in het geheugen.


17) Wat is het verschil tussen SqlCommand en SqlDataAdapter?

Kenmerk SQLCommand SqlDataAdapter
Doel Voert รฉรฉn SQL-instructie uit. Fungeert als een brug tussen DataSet en database.
Aansluiting Vereist een open verbinding Beheert de verbinding automatisch
Gegevensmodel aangesloten Losgekoppeld
Gebruik Realtime commando's Offline updates en synchronisatie

Voorbeeld: Gebruik SQLCommand bij het uitvoeren van directe query's (bijv. INSERT, SELECT). Gebruik SqlDataAdapter voor losgekoppelde bewerkingen zoals het vullen en bijwerken van datasets.


18) Wat zijn de verschillende soorten opdrachten in ADO.NET?

ADO.NET ondersteunt het volgende: Opdrachttype waarden:

  1. Tekst: Standaardtype voor onbewerkte SQL-query's.
  2. Opgeslagen procedure: Voert vooraf gedefinieerde opgeslagen procedures uit.
  3. TableDirect: Haalt alle rijen op uit een opgegeven tabel (voor OLE DB-providers).

Het gebruik van opgeslagen procedures verbetert de beveiliging en prestaties, terwijl Tekst is ideaal voor dynamische zoekopdrachten.


19) Wat is een dataset en wat zijn de belangrijkste eigenschappen ervan?

A DataSet is een in-memory representatie van gegevens Het bestaat uit meerdere tabellen, relaties en beperkingen. Het ondersteunt offline toegang en XML-gebaseerde gegevensopslag.

Belangrijkste eigenschappen:

  • tabellen: Verzameling van DataTable-objecten.
  • Relaties: Relaties tussen tabellen.
  • Beperkingen: Zorg voor data-integriteit (bijv. UniqueConstraint, ForeignKeyConstraint).
  • Heeft wijzigingen: Geeft aan of de gegevens zijn gewijzigd.

Een DataSet maakt bulkdatabewerkingen en offline manipulatie mogelijk, waardoor het ideaal is voor gedistribueerde applicaties.


20) Leg het verschil uit tussen de methoden Fill() en Update() in ADO.NET.

Methode Doel Verbindingsvereiste
Vullen() Vult de DataSet met gegevens uit de gegevensbron. Opent en sluit de verbinding automatisch.
Update() Verzendt gewijzigde DataSet-gegevens terug naar de database. Opent en sluit de verbinding automatisch.

Uitleg:

  • Vullen(): Leest gegevens uit de bron in DataSet-tabellen met behulp van de SelectCommand.
  • Update(): Past INSERT-, UPDATE- of DELETE-wijzigingen in de DataSet terug naar de database. Deze twee methoden vormen samen de kern van losgekoppelde dataoperaties in ADO.NET.

21) Wat is de rol van het Connection-object in ADO.NET?

De Verbindingsobject vestigt een verbinding tussen een applicatie en een gegevensbronHet biedt methoden en eigenschappen aan openen, sluiten en beheren Databaseverbinding. Een typisch verbindingsobject verschilt per provider โ€” bijvoorbeeld: SqlVerbinding voor SQL Server en OleDb-verbinding voor OLE DB-bronnen.

Belangrijkste eigenschappen:

  • Verbindingsdraad โ€“ Definieert databasegegevens en -configuratie.
  • Land โ€“ Geeft aan of de verbinding open of gesloten is.
  • BeginTransaction() โ€“ Start een databasetransactie.

Voorbeeld:

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=TestDB;Integrated Security=True");
con.Open();
// Operations
con.Close();

Het efficiรซnt beheren van verbindingen is cruciaal voor de prestaties, met name in applicaties met veel verkeer.


22) Hoe handel je transacties af in ADO.NET, met een voorbeeld?

Een transactie garandeert atomiciteit โ€” alle bewerkingen slagen of mislukken tegelijk. ADO.NET biedt de SQL-transactie les hiervoor.

Voorbeeld:

SqlConnection con = new SqlConnection(connString);
con.Open();
SqlTransaction tran = con.BeginTransaction();

try
{
    SqlCommand cmd1 = new SqlCommand("INSERT INTO Accounts VALUES(1,1000)", con, tran);
    SqlCommand cmd2 = new SqlCommand("UPDATE Accounts SET Balance = Balance - 500 WHERE ID = 1", con, tran);
    cmd1.ExecuteNonQuery();
    cmd2.ExecuteNonQuery();
    tran.Commit(); // commit if all succeed
}
catch
{
    tran.Rollback(); // rollback on error
}
finally
{
    con.Close();
}

Dit zorgt ervoor data consistentie in geval van runtimefouten of uitzonderingen.


23) Wat zijn de voordelen van het gebruik van opgeslagen procedures met ADO.NET?

Opgeslagen procedures bieden diverse voordelen ten opzichte van inline SQL-query's:

Voordeel Beschrijving
Prestaties Vooraf gecompileerd en in de cache op de server opgeslagen, waardoor de uitvoeringstijd wordt verkort.
Security Beschermt tegen SQL-injectie door gebruik te maken van parameters.
Onderhoudbaarheid De bedrijfslogica bevindt zich in de database, waardoor updates eenvoudig kunnen worden uitgevoerd.
Herbruikbaarheid Kan vanuit meerdere applicaties of modules worden aangeroepen.

Voorbeeld:

SqlCommand cmd = new SqlCommand("sp_GetEmployeeDetails", con);
cmd.CommandType = CommandType.StoredProcedure;

Het combineren van ADO.NET met stored procedures leidt dus tot efficiรซnte en veilige databasebewerkingen.


24) Wat is het verschil tussen Dataset.AcceptChanges() en DataAdapter.Update()?

Kenmerk AcceptChanges() DataAdapter.Update()
Werking Slaat wijzigingen in de DataSet lokaal op. Slaat wijzigingen op in de database.
Database-interactie Nee Ja
Effect Markeer alle rijen als "Onveranderd". Voert SQL-opdrachten uit (Insert, Update, Delete)

Uitleg: het roepen AcceptChanges() Hiermee wordt alleen de interne status van de DataSet bijgewerkt, zonder dat deze in de database wordt opgeslagen. Om wijzigingen permanent op te slaan, Update() moet worden gebruikt. In de praktijk gebruiken ontwikkelaars eerst Update() om gegevens op te slaan en dan AcceptChanges() om de wijzigingen lokaal af te ronden.


25) Hoe kun je met XML-gegevens werken in ADO.NET?

ADO.NET biedt naadloze integratie met XML voor het opslaan, uitwisselen en transformeren van gegevens.

Belangrijkste methoden:

  • WriteXml() โ€“ Schrijft de inhoud van de DataSet naar een XML-bestand.
  • ReadXml() โ€“ Leest gegevens uit een XML-bestand in een DataSet.
  • GetXml() โ€“ Retourneert een XML-weergave van de DataSet als een tekenreeks.
  • GetXmlSchema() โ€“ Retourneert het schema in XML-formaat.

Voorbeeld:

dataSet.WriteXml("Employees.xml");

Deze functie maakt het eenvoudig om gegevens uit te wisselen tussen heterogene systemen met behulp van XML als tussenformaat.


26) Wat is het doel van de DataColumn- en DataRow-objecten in ADO.NET?

In ADO.NET, Gegevenskolom en Gegevensrij vormen de bouwstenen van in-memory datatabellen:

  • Gegevenskolom: Definieert het schema: naam, gegevenstype, beperkingen en standaardwaarden.
  • DataRow: Vertegenwoordigt een daadwerkelijke record (rij) met gegevens in een DataTable.

Voorbeeld:

DataColumn col = new DataColumn("EmployeeID", typeof(int));
dataTable.Columns.Add(col);
DataRow row = dataTable.NewRow();
row["EmployeeID"] = 101;
dataTable.Rows.Add(row);

Gezamenlijk maken ze gestructureerde manipulatie van gegevens mogelijk in een offline omgeving.


27) Hoe ondersteunt ADO.NET gegevensvalidatie en beperkingen?

ADO.NET waarborgt de gegevensintegriteit via schaarste op het niveau van de DataSet en de DataTable:

Beperking Doel
Unieke beperking Garandeert dat kolomwaarden uniek zijn.
ForeignKeyConstraint Zorgt voor behoud van referentiรซle integriteit tussen gerelateerde tabellen.
Standaardwaarde-eigenschap Definieert standaard kolomwaarden.

Voorbeeld:

UniqueConstraint uc = new UniqueConstraint(ds.Tables["Employee"].Columns["EmpID"]);
ds.Tables["Employee"].Constraints.Add(uc);

Deze beperkingen repliceren regels op databaseniveau in het geheugen, waardoor schone en consistente gegevens worden gegarandeerd vรณรณr synchronisatie.


28) Wat is het verschil tussen OLE DB- en ODBC-providers in ADO.NET?

leverancier Doel namespace
OLE DB (.NET Framework-gegevensprovider voor OLE DB) Geschikt voor MS Access en andere OLE DB-compatibele databases. System.Data.OleDb
ODBC (.NET Framework-gegevensprovider voor ODBC) Gebruikt voor databases met ODBC-stuurprogramma's zoals MySQL System.Data.Odbc

Uitleg:

  • OLE-DB is doorgaans sneller met Microsoft technologieรซn.
  • ODBC Biedt bredere compatibiliteit met verschillende databaseplatformen.

29) Hoe verbeter je de prestaties van ADO.NET-toepassingen?

Prestatieoptimalisatie in ADO.NET omvat het optimaliseren van zowel de toegang tot de database als de verwerking in het geheugen:

Praktische tips:

  1. Gebruik Aansluiting Pooling en altijd nauwe banden snel.
  2. Verkiezen Gegevenslezer voor alleen-lezen gegevens.
  3. Gebruik geparametriseerde zoekopdrachten in plaats van dynamische SQL.
  4. Minimaliseer gegevensoverdracht met behulp van SELECTEER specifieke kolommen.
  5. Hefboomwerking opgeslagen procedures voor complexe logica.
  6. Cachegegevens waar mogelijk met behulp van DataSet-caching.
  7. Gooi voorwerpen op de juiste manier weg. using blokken.

Deze maatregelen verbeteren de schaalbaarheid, verminderen de latentie en verlagen de belasting van de database.


30) Wat zijn de belangrijkste verschillen tussen DataTable en DataSet?

Aspect Data tafel DataSet
Structuur Enkele tafel Verzameling van meerdere DataTables
Relaties Niet ondersteund Ondersteunt relaties tussen tabellen
beperkingen Beperkt Ondersteunt zowel unieke als externe sleutelbeperkingen.
XML Operaties Partieel Volledige ondersteuning voor het lezen en schrijven van XML-bestanden
Use Case Eenvoudige gegevensbewerkingen Complexe datastructuren en offline manipulatie

Uitleg: A Data tafel is ideaal voor de weergave van gegevens in รฉรฉn tabel, terwijl een DataSet wordt gebruikt voor complexe scenario's met meerdere tabellen, relaties en beperkingen. Beide ondersteunen de verwerking van losgekoppelde gegevens, maar verschillen in schaal en reikwijdte.


31) Wat is het nut van asynchroon programmeren in ADO.NET?

Asynchroon programmeren in ADO.NET maakt het mogelijk niet-blokkerende databasebewerkingenDit verbetert de responsiviteit van applicaties, met name in web- en UI-gebaseerde systemen. Het stelt uw applicatie in staat om andere taken uit te voeren terwijl deze wacht tot databasebewerkingen zijn voltooid.

ADO.NET biedt asynchrone methoden zoals:

  • OpenAsync() โ€“ Opent asynchroon een verbinding.
  • ExecuteReaderAsync() โ€“ Voert een commando uit en haalt de resultaten asynchroon op.
  • ExecuteNonQueryAsync() โ€“ Voert SQL-opdrachten asynchroon uit.
  • ExecuteScalarAsync() - Retourneert asynchroon รฉรฉn enkele waarde.

Voorbeeld:

await connection.OpenAsync();
await command.ExecuteReaderAsync();

Voordelen: Verbeterde schaalbaarheid, een betere gebruikerservaring en efficiรซnter gebruik van resources in I/O-intensieve applicaties.


32) Wat is het verschil tussen DataReader en DataAdapter qua prestaties en gebruik?

Aspect Gegevenslezer DataAdapter
Aansluiting aangesloten Losgekoppeld
Prestaties Sneller (streamen) Langzamer (in het geheugen)
Toegang tot data Alleen-lezen, alleen-doorsturen Bewerkbaar, willekeurige toegang
Geheugengebruik Laag Hoger (slaat gegevens op in het geheugen)
Use Case Gegevens snel weergeven Offline bewerken en synchroniseren

Uitleg: Bij real-time gegevensweergave, Gebruik dan Gegevenslezer. Voor offline gegevensmanipulatie, Gebruik dan DataAdapterDataReader is ideaal voor schaalbaarheid, terwijl DataAdapter geschikt is voor complexe, datagedreven applicaties.


33) Hoe integreert ADO.NET met LINQ?

LINQ (Language Integrated Query) biedt een moderne manier om Query's uitvoeren op ADO.NET-datastructuren zoals DataSet en DataTable. C#-syntaxis gebruiken in plaats van SQL.

Voorbeeld:

var result = from emp in dataSet.Tables["Employee"].AsEnumerable()
             where emp.Field<string>("Department") == "HR"
             select emp;

Voordelen:

  • Typeveiligheid tijdens het compileren.
  • Het is niet nodig om SQL-strings in de code te gebruiken.
  • Eenvoudiger debuggen en onderhouden.

LINQ-to-DataSet maakt ADO.NET-query's mogelijk. leesbaarder, beter onderhoudbaar en efficiรซnter.


34) Waarvoor wordt DataTableReader gebruikt in ADO.NET?

A DataTableReader biedt alleen-voorwaarts, alleen-lezen Toegang tot een of meer DataTables in een DataSet. Het functioneert als een Gegevenslezer, maar voor gegevens die in het geheugen zijn opgeslagen.

Voorbeeld:

DataTableReader reader = dataSet.CreateDataReader();
while (reader.Read())
{
    Console.WriteLine(reader["EmployeeName"]);
}

Deze aanpak maakt snelle doorloop van gegevens in het geheugen mogelijk, terwijl de gegevens behouden blijven.ping Het losgekoppelde model blijft intact.


35) Hoe kun je een opgeslagen procedure met parameters aanroepen met ADO.NET?

U kunt gebruik maken van de SQLCommand Object met parameters om opgeslagen procedures veilig aan te roepen.

Voorbeeld:

SqlCommand cmd = new SqlCommand("sp_GetEmployeeByID", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@EmpID", 101);
SqlDataReader dr = cmd.ExecuteReader();

Deze aanpak voorkomt SQL Injection, Biedt type veiligheiden maakt het mogelijk om Verwerking van invoer-/uitvoerparameters in bedrijfsapplicaties.


36) Wat zijn de voor- en nadelen van het gebruik van een DataSet in ADO.NET?

Voordelen Nadelen
Werkt in offline modus Verbruikt meer geheugen
Kan meerdere tabellen opslaan Langzamer dan DataReader
Ondersteunt relaties en beperkingen Niet ideaal voor zeer grote datasets.
XML-integratieondersteuning Extra overheadkosten voor serialisatie

Overzicht: DataSets zijn ideaal voor complexe, offline bewerkingen of bij het werken met XML/webservices. Voor krachtige of realtime-applicaties kunt u beter kiezen voor Gegevenslezer or DataAdapter voor efficiรซntie.


37) Hoe kunt u fouten in ADO.NET-bewerkingen afhandelen?

Foutafhandeling wordt uitgevoerd met behulp van probeer-te-vangen-eindelijk blokken en de SqlException klasse.

Voorbeeld:

try
{
    connection.Open();
    SqlCommand cmd = new SqlCommand("SELECT * FROM NonExistingTable", connection);
    cmd.ExecuteReader();
}
catch (SqlException ex)
{
    Console.WriteLine("Error: " + ex.Message);
}
finally
{
    connection.Close();
}

Praktische tips:

  • Registreer SQL-uitzonderingen met behulp van gestructureerde logboekregistratie (bijv. Serilog, NLog).
  • Gebruik finally or using blokken om ervoor te zorgen dat de verbindingen gesloten zijn.
  • Vermijd het openbaar maken van gevoelige foutmeldingen in een productieomgeving.

38) Wat is de rol van CommandBuilder in ADO.NET?

De CommandBuilder Genereert automatisch SQL-instructies (INSERT, UPDATE, DELETE) voor een DataAdapter op basis van de SELECT-opdracht. Hierdoor is het niet meer nodig om handmatig updatequery's te schrijven.

Voorbeeld:

SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Employees", con);
SqlCommandBuilder builder = new SqlCommandBuilder(da);
da.Update(dataSet, "Employees");

Het is nuttig voor snelle ontwikkeling, maar niet aanbevolen voor complexe query's of joinswaarbij handmatig ingevoerde commando's meer controle bieden.


39) Hoe implementeer je connection pooling in ADO.NET?

Verbinding pooling Het hergebruikt bestaande databaseverbindingen in plaats van voor elk verzoek nieuwe aan te maken, wat de prestaties verbetert.

Voorbeeld verbindingsreeks:

"Data Source=.;Initial Catalog=TestDB;Integrated Security=True;Pooling=True;Min Pool Size=5;Max Pool Size=100;"

Werken:

  • Wanneer een verbinding wordt verbroken, keert deze terug naar de pool in plaats van te worden vernietigd.
  • ADO.NET haalt gepoolde verbindingen op voor volgende verzoeken.

Voordelen:

  • Vermindert de verbindingskosten.
  • Verbetert de schaalbaarheid bij zware belasting.
  • Wordt automatisch beheerd door de .NET-runtime.

40) Wat zijn de belangrijkste verschillen tussen ExecuteReader(), ExecuteScalar() en ExecuteNonQuery()?

Methode Retourtype Use Case Voorbeeldquery
UitvoerenReader() Gegevenslezer Meerdere rijen ophalen SELECTEER * VAN Medewerkers
ExecuteScalar() Enkele waarde Geaggregeerde functies SELECT COUNT(*) FROM Employees
ExecuteNonQuery() Geheel getal (betrokken rijen) DML-instructies UPDATE Werknemers Salaris instellen=5000

Voorbeeld:

SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Employees", con);
int total = (int)cmd.ExecuteScalar();

Elke methode dient een specifiek doel: UitvoerenReader() voor het lezen van gegevens, ExecuteScalar() voor snelle zoekopdrachten, en ExecuteNonQuery() voor wijzigingen.


41) Wat is het verschil tussen ExecuteXmlReader() en ExecuteReader()?

Beide methoden worden gebruikt om gegevens uit een database te lezen, maar ze verschillen in hun uitvoerformaat en doel.

Aspect UitvoerenReader() ExecuteXmlReader()
Retourneren DataReader-object XML-gegevens als XmlReader
Data type tabellarisch XML-document
Gebruik Het lezen van gestructureerde rijen Gegevens ophalen in XML-formaat
Prestaties Sneller voor relationele data Handig voor XML-gebaseerde applicaties

Voorbeeld:

SqlCommand cmd = new SqlCommand("SELECT * FROM Employees FOR XML AUTO", con);
XmlReader xmlReader = cmd.ExecuteXmlReader();

ExecuteXmlReader() Het wordt voornamelijk gebruikt bij de integratie van .NET met webservices, REST API's of XML-gegevensopslag.


42) Hoe beheert u meerdere resultaatsets met ADO.NET?

ADO.NET's SQLDataReader ondersteunt meerdere resultaatsets met behulp van de NextResult() methode. Hiermee kunt u meerdere query's verwerken die in รฉรฉn commando worden uitgevoerd.

Voorbeeld:

SqlCommand cmd = new SqlCommand("SELECT * FROM Employees; SELECT * FROM Departments;", con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
    Console.WriteLine(dr["EmployeeName"]);
}
dr.NextResult(); // Move to next table
while (dr.Read())
{
    Console.WriteLine(dr["DepartmentName"]);
}

Deze aanpak is efficiรซnt wanneer gerelateerde gegevens in รฉรฉn databaseaanvraag worden opgehaald, waardoor de latentie wordt verminderd.


43) Wat zijn enkele praktijkvoorbeelden waarin ADO.NET de voorkeur heeft boven Entity Framework?

Hoewel Entiteitskader (EF) Hoewel modern en op ORM gebaseerd, blijft ADO.NET relevant vanwege zijn prestaties, controle en eenvoud in bepaalde gebruikssituaties:

  1. Hoogwaardige data-toegangslagen (bankwezen, handelssystemen).
  2. Lichtgewicht toepassingen waarbij de volledige ORM-overhead niet nodig is.
  3. Batchverwerking of bulkdatabewerkingen.
  4. Legacy-systeemintegratie met opgeslagen procedures.
  5. Fijnkorrelige controle over SQL en de levenscyclus van de verbinding.

In het kort:

Gebruik ADO.NET wanneer Je hebt snelheid, controle en handmatige optimalisatie nodig.en EF wanneer snelle ontwikkeling en abstractie zijn de prioriteit.


44) Wat is het verschil tussen het ADO.NET Entity Data Model en het traditionele ADO.NET?

Aspect ADO.NET Entiteitsdatamodel (EDM)
Aanpak Toegang tot gegevens op laag niveau ORM (object-relationele kaart)ping)
Querytaal SQL-commando's LINQ / Entity SQL
Prestaties Snellere, handmatige optimalisatie Langzamer, buikspierentracoverhead
Data weergave Tabellen en rijen Entiteiten en relaties
Ontwikkelingsinspanning Hoge Lagere

Overzicht: De Entiteitsdatamodel automatiseert de toewijzing van objecten aan tabellenping en zoekopdrachtvertaling, terwijl ADO.NET Geeft ontwikkelaars volledige controle, ten koste van meer handmatige codering.


45) Hoe beveiligt u de toegang tot de database in ADO.NET-toepassingen?

Beveiliging in ADO.NET draait om... Het beschermen van verbindingsreeksen, het voorkomen van SQL-injectie en het waarborgen van toegang op basis van minimale privileges..

Praktische tips:

  1. Gebruik geparameteriseerde query's โ€” Vermijd het samenvoegen van SQL-strings.
  2. Verbindingsreeksen versleutelen in web.config met: aspnet_regiis -pef "connectionStrings" "C:\AppFolder"
  3. Gebruik Windows authenticatie Gebruik waar mogelijk SQL-authenticatie in plaats van authenticatie.
  4. Vermijd het opslaan van inloggegevens. in gewone tekst.
  5. Valideer alle gebruikersinvoer vรณรณr de database-uitvoering.

Voorbeeld (Beveiligd commando):

cmd.Parameters.Add("@EmpID", SqlDbType.Int).Value = empId;

Deze maatregelen verkleinen het risico op SQL-injectie en het blootleggen van inloggegevens aanzienlijk.


46) Hoe kunt u bulkinsertbewerkingen efficiรซnt uitvoeren in ADO.NET?

Voor het invoegen van grote hoeveelheden gegevens, SqlBulkCopy Biedt de snelste methode in ADO.NET.

Voorbeeld:

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
    bulkCopy.DestinationTableName = "Employees";
    bulkCopy.WriteToServer(dataTable);
}

Voordelen:

  • Voegt duizenden records snel in.
  • Ideaal voor ETL (Extract, Transform, Load) scenario's.
  • Vermindert het aantal communicaties tussen de applicatie en de database.

Let op: SqlBulkCopy werkt het beste voor SQL Server en vereist een passende overeenkomst met het tabelschema.


47) Wat is het verschil tussen de methoden FillSchema() en Fill() in DataAdapter?

Methode Doel Effect op schema
Vullen() Laadt alleen gegevens Haalt het schema niet op.
FillSchema() Laadt gegevens + schema Haalt kolomdefinities, gegevenstypen en beperkingen op.

Voorbeeld:

dataAdapter.FillSchema(dataSet, SchemaType.Source);

Gebruik FillSchema() Wanneer de structuur van de tabel (kolommen, gegevenstypen) vereist is voordat gegevens gemanipuleerd of gekoppeld kunnen worden.


48) Wat zijn de beste werkwijzen voor het gebruik van de objecten SqlConnection en SqlCommand?

  1. Gebruik using verklaringen om een โ€‹โ€‹correcte afvoer te garanderen:
  2. using (SqlConnection con = new SqlConnection(connString))
    {
        con.Open();
        // operations
    }
    
  3. Vermijd keeping Verbindingen blijven langer open dan nodig.
  4. Gebruik connectiepooling (standaard ingeschakeld).
  5. SqlCommand-objecten hergebruiken voor soortgelijke bewerkingen met parameters.
  6. Behandel uitzonderingen op een elegante manier. met behulp van try-catch-finally.
  7. Vermijd SELECT *; geef de kolommen expliciet op.

Door deze werkwijzen te volgen, worden hoge prestaties en een robuust resourcebeheer gewaarborgd.


49) Hoe kun je deadlocks in ADO.NET detecteren en oplossen?

A impasse Dit gebeurt wanneer twee of meer transacties elkaar blokkeren. In ADO.NET resulteert dit meestal in een SqlException with Foutnummer 1205.

Behandelingsstrategie:

  1. Vang de uitzondering op en probeer de transactie opnieuw.
  2. Transacties behouden kort en efficiรซnt.
  3. Toegangstabellen in een consistente volgorde over verschillende transacties heen.
  4. Gebruik geschikt transactie-isolatieniveaus als ReadCommitted.
  5. Bewaak impasses met behulp van SQL Profiler of Extended Events.

Voorbeeld (opnieuw proberen-logica):

int retryCount = 3;
while (retryCount-- > 0)
{
    try
    {
        // Transaction logic
        break;
    }
    catch (SqlException ex) when (ex.Number == 1205)
    {
        Thread.Sleep(2000); // retry delay
    }
}

50) Wat zijn de voor- en nadelen van het gebruik van ADO.NET ten opzichte van andere technologieรซn voor gegevenstoegang?

Voordelen Nadelen
Hoge prestaties en nauwkeurige controle Vereist meer standaardcode.
Ondersteunt zowel aangesloten als niet-aangesloten modellen. Geen ingebouwde ORM-kaartping
Werkt met meerdere gegevensbronnen. Handmatig SQL-onderhoud
Volledige XML- en DataSet-integratie Meer foutgevoelig voor beginners
Lichtgewicht en afhankelijkheidsvrij Moeilijker schaalbaar met complexe domeinmodellen.

Overzicht: ADO.NET blijft de de basis van alle .NET-gegevenstoegangslagen, Het aanbieden van snelheid, flexibiliteit en transparantie. Technologieรซn zoals Entiteitskader en Dapper zijn gebouwd op ADO.NET, waardoor beheersing ervan essentieel is voor serieuze .NET-ontwikkelaars.


๐Ÿ” Top ADO.NET-interviewvragen met praktijkvoorbeelden en strategische antwoorden

1) Wat is ADO.NET en waar wordt het doorgaans gebruikt in bedrijfsapplicaties?

Verwacht van kandidaat: De interviewer wil uw basiskennis van ADO.NET en de rol ervan in datagestuurde applicaties, met name binnen het .NET-ecosysteem, toetsen.

Voorbeeld antwoord: ADO.NET is een framework voor gegevenstoegang in .NET dat wordt gebruikt om applicaties te verbinden met relationele databases zoals SQL Server. Het biedt klassen voor het ophalen, bewerken en bijwerken van gegevens via verbonden en niet-verbonden modellen. Het wordt veelvuldig gebruikt in bedrijfsapplicaties voor betrouwbare en schaalbare databasecommunicatie.


2) Kunt u het verschil uitleggen tussen verbonden en niet-verbonden architecturen in ADO.NET?

Verwacht van kandidaat: De interviewer beoordeelt uw begrip van prestatie- en schaalbaarheidsaspecten bij database-toegang.

Voorbeeld antwoord: De verbonden architectuur maakt gebruik van objecten zoals SqlDataReader, die een open databaseverbinding vereisen tijdens het lezen van gegevens. De niet-verbonden architectuur maakt gebruik van DataSet en DataTable, waardoor gegevens in het geheugen kunnen worden geladen en de databaseverbinding vroegtijdig kan worden gesloten. Dit verbetert de schaalbaarheid en vermindert het resourcegebruik.


3) Wat is het verschil tussen DataSet en DataReader, en wanneer zou je de ene boven de andere verkiezen?

Verwacht van kandidaat: De interviewer wil zien of je in staat bent om de juiste tools te kiezen op basis van prestaties en toepassingsbehoeften.

Voorbeeld antwoord: Een DataReader is alleen-lezen en werkt voorwaarts, waardoor deze sneller en geheugenefficiรซnter is voor grote resultaten. Een DataSet bevindt zich in het geheugen en ondersteunt meerdere tabellen en relaties. In mijn vorige functie gebruikte ik DataReader voor hoogwaardige rapportagefuncties en DataSet voor scenario's die offline gegevensmanipulatie vereisten.


4) Hoe ga je efficiรซnt om met databaseverbindingen in ADO.NET?

Verwacht van kandidaat: De interviewer wil uw kennis van best practices op het gebied van resource management toetsen.

Voorbeeld antwoord: Efficiรซnt beheer van verbindingen houdt in dat verbindingen zo laat mogelijk worden geopend en zo snel mogelijk worden gesloten zodra de taak is voltooid. Het gebruik van de `using`-instructie zorgt ervoor dat verbindingen correct worden vrijgegeven. Verbindingspooling in ADO.NET draagt โ€‹โ€‹ook bij aan betere prestaties door bestaande verbindingen te hergebruiken.


5) Wat zijn geparameteriseerde query's en waarom zijn ze belangrijk?

Verwacht van kandidaat: De interviewer wil uw kennis van beveiliging en preventie van SQL-injecties toetsen.

Voorbeeld antwoord: Geparameteriseerde query's scheiden de SQL-logica van de gebruikersinvoer, wat helpt bij het voorkomen van SQL-injectieaanvallen. Ze verbeteren ook de prestaties doordat queryplannen hergebruikt kunnen worden. Bij mijn vorige werkgever waren geparameteriseerde query's verplicht voor alle databasebewerkingen om de beveiligingsnormen te handhaven.


6) Beschrijf een situatie waarin u een trage databasebewerking moest optimaliseren met behulp van ADO.NET.

Verwacht van kandidaat: De interviewer beoordeelt uw probleemoplossende vaardigheden en ervaring met prestatieoptimalisatie.

Voorbeeld antwoord: In mijn vorige functie ontdekte ik een trage query die werd veroorzaakt door onnodig gebruik van DataSet. Ik heb deze vervangen door een SqlDataReader en de SQL-query zelf geoptimaliseerd, wat de uitvoeringstijd en het geheugenverbruik aanzienlijk heeft verminderd.


7) Hoe ga je om met uitzonderingen in ADO.NET-toepassingen?

Verwacht van kandidaat: De interviewer wil inzicht krijgen in uw aanpak van foutafhandeling en applicatiestabiliteit.

Voorbeeld antwoord: Ik gebruik try-catch-finally-blokken om uitzonderingen zoals SqlException af te handelen. Het vastleggen van de foutdetails en het ervoor zorgen dat verbindingen in het finally-blok worden gesloten, is cruciaal. Deze aanpak draagt โ€‹โ€‹bij aan de stabiliteit van de applicatie en vereenvoudigt het oplossen van problemen.


8) Wat is een DataAdapter en hoe werkt deze met een DataSet?

Verwacht van kandidaat: De interviewer test uw begrip van concepten rondom gegevenssynchronisatie.

Voorbeeld antwoord: Een DataAdapter fungeert als een brug tussen een DataSet en de database. Het gebruikt de opdrachten Select, Insert, Update en Delete om de DataSet te vullen en de wijzigingen terug te sturen naar de database. Dit is handig in situaties zonder internetverbinding, waar batchgewijze updates nodig zijn.


9) Hoe zou u een op ADO.NET gebaseerde oplossing ontwerpen voor een applicatie met een hoge mate van gelijktijdigheid?

Verwacht van kandidaat: De interviewer wil uw architectonische denkwijze en uw overwegingen met betrekking tot schaalbaarheid beoordelen.

Voorbeeld antwoord: Ik zou de open-tijd van verbindingen minimaliseren, gebruikmaken van connection pooling, waar mogelijk de voorkeur geven aan DataReader en zorgen voor efficiรซnte SQL-query's. In mijn vorige functie hielp deze aanpak om een โ€‹โ€‹groot aantal gelijktijdige gebruikers te ondersteunen zonder knelpunten in de database.


10) Hoe waarborg je de onderhoudbaarheid en testbaarheid van ADO.NET-code?

Verwacht van kandidaat: De interviewer is op zoek naar een goede programmeerstijl en een langetermijnvisie.

Voorbeeld antwoord: Ik zorg voor onderhoudbaarheid door de logica voor gegevenstoegang te scheiden in repositories of lagen voor gegevenstoegang. Het gebruik van duidelijke methodenamen, geparameteriseerde query's en gecentraliseerd verbindingsbeheer verbetert de leesbaarheid en testbaarheid. Unit tests kunnen worden geschreven door abstracdatabasebewerkingen uitvoeren achter interfaces.

Vat dit bericht samen met: