50 najpopularnijih pitanja i odgovora za intervju za ADO.NET (2026.)

Pitanja i odgovori za intervju za ADO.NET

Priprema za ADO.NET intervju znači predviđanje što intervjuisti cijene. Rasprava o pitanjima na ADO.NET intervjuu pomaže u otkrivanju dubine, sposobnosti rješavanja problema i razumijevanja koncepata pristupa podacima koje poslodavci aktivno procjenjuju.

Savladavanje ovih pitanja otvara radna mjesta u razvoju poduzeća, analitici i backend sustavima. Kandidati pokazuju tehničku stručnost, stvarno profesionalno iskustvo i razumijevanje domene stečeno radom u tom području. Od studenata prve godine do viših stručnjaka, menadžeri i voditelji timova cijene praktične analitičke vještine, usklađenost vještina i sposobnost rješavanja uobičajenih tehničkih rasprava.
Čitaj više…

👉 Besplatno preuzimanje PDF-a: Pitanja i odgovori za intervju za ADO.NET

Najčešća pitanja i odgovori na intervjuu za ADO.NET

1) Što je ADO.NET i koju ulogu igra u .NET aplikacijama?

ADO.NET (ActiveX podatkovni objekti .NET) je tehnologija pristupa podacima u roku od Microsoft .NET Framework se koristi za interakciju s bazama podataka i drugim izvorima podataka kao što su XML datoteke. Pruža skup klasa i sučelja koja omogućuju povezivanje s izvorom podataka, izvršavanje upita ili naredbi te dohvaćanje i manipuliranje podacima. ADO.NET podržava oboje povezano (veza s bazom podataka u stvarnom vremenu) i isključeno (pristup podacima u memoriji) modele, što ga čini fleksibilnim za širok raspon zahtjeva primjene.


2) Koje su glavne komponente ADO.NET-a?

Arhitektura ADO.NET-a sastoji se od nekoliko ključnih komponente koje rade zajedno kako bi omogućile pristup podacima:

  • Priključak: Uspostavlja vezu između .NET aplikacije i izvora podataka.
  • Naredba: Izvršava SQL upite, pohranjene procedure i ostale naredbe.
  • Čitač podataka: Omogućuje brzo, samo za čitanje i unaprijedno dohvaćanje podataka pomoću povezanog modela.
  • Adapter podataka: Djeluje kao most između izvora podataka i skupa podataka za nepovezani pristup podacima.
  • Skup podataka: Prikaz podataka u memoriji, sposoban za pohranu više tablica i informacija o shemi.
  • TablicaPodataka / RedPodataka / StupacPodataka: Predstavlja strukturu tablice i podatke unutar DataSeta.

3) Objasnite razliku između povezanog i nepovezanog pristupa podacima.

ADO.NET podržava dva različita modela:

  • Povezani model:
    • Koristi predmete poput Veza i čitač podataka.
    • Aplikacija mora održavati otvorenu vezu s bazom podataka tijekom dohvaćanja podataka.
    • Idealno za operacije u stvarnom vremenu, samo za čitanje, gdje je potrebna neposredna interakcija s bazom podataka.
  • Odspojeni model:
    • koristi Adapter podataka i skup podataka.
    • Podaci se učitavaju u memoriju i veza s bazom podataka se može zatvoriti.
    • Omogućuje manipulaciju podacima izvan mreže i kasnije usklađivanje s bazom podataka. Ovaj pristup poboljšava skalabilnost i smanjuje opterećenje poslužitelja baze podataka.

4) Koja je razlika između DataReadera i DataSeta?

Aspekt DataReader Skup podataka
priključak Zahtijeva otvorenu vezu s bazom podataka Radovi su isključeni
Pristup podacima Samo naprijed, samo za čitanje Podržava manipulaciju u memoriji
Izvođenje High speed Niže od DataReadera zbog opterećenja memorije
Koristite slučaj Brzo dohvaćanje velikih rezultata Složene operacije s podacima i rad izvan mreže

A DataReader je učinkovit i lagan, idealan za brzo čitanje podataka. A Skup podatakaS druge strane, koristan je kada trebate raditi s više tablica, odnosa i operacija s podacima u memoriji.


5) Što je veza Pooling u ADO.NET-u?

priključak Pooling je značajka performansi koja ponovno koristi otvorene veze s bazom podataka umjesto ponovljenog otvaranja i zatvaranja veza. Kada se veza zatvori, vraća se u skup koji održava ADO.NET. Naknadni zahtjevi koriste postojeću vezu iz skupa, što uvelike smanjuje opterećenje stvaranja veza i poboljšava performanse u okruženjima s velikim opterećenjem.


6) Što su pružatelji podataka u ADO.NET-u?

Pružatelji podataka su klase koje omogućiti komunikaciju između vaše aplikacije i određenih vrsta izvora podatakaNajčešće korišteni pružatelji podataka u ADO.NET-u uključuju:

  • SQL klijent: Za Microsoft SQL Server.
  • OleDb: Za baze podataka dostupne putem OLE DB-a (npr. MS Access).
  • ODBC: Za baze podataka putem ODBC upravljačkih programa.
  • OracleKlijent: Za Oracle baze podataka (zastarjelo u novijim .NET verzijama). Ovi pružatelji usluga uključuju vlastite klase Connection, Command, DataReader i DataAdapter, svaka optimizirana za odgovarajući izvor.

7) Kako se izvršavaju SQL naredbe u ADO.NET-u?

U ADO.NET-u, SQL naredbe se izvršavaju pomoću Objekt naredbeOvisno o vrsti operacije koju želite izvršiti, koristite različite metode izvršavanja:

  • IzvršiČitač(): Za SELECT upite koji vraćaju skupove rezultata.
  • IzvršiNeUpit(): Za INSERT, UPDATE, DELETE (vraća broj pogođenih redaka).
  • IzvršiSkalar(): Za upite koji vraćaju jednu vrijednost (npr. COUNT).
  • IzvršiXmlReader(): Za upite koji vraćaju XML podatke. Korištenje odgovarajuće metode izvršavanja osigurava optimalne performanse i ispravnu obradu rezultata.

8) Koja je svrha objekta Command?

The Objekt naredbe u ADO.NET-u je odgovoran za izvršavanje SQL naredbi ili pohranjenih procedura prema bazi podataka. Koristi uspostavljenu vezu i izvršava naredbe poput dohvaćanja podataka, mijenjanja zapisa ili izvođenja složenih operacija pomoću pohranjenih procedura. Objekt Command može se konfigurirati s parametrima za podršku sigurnim upitima i izbjegavanje SQL injekcije.


9) Što su parametrizirani upiti i zašto su važni?

A parametrizirani upit je SQL naredba gdje rezervirana mjesta (parametri) koriste se umjesto izravnog kodiranja vrijednosti u SQL niz. Ovaj pristup:

  • sprečava SQL Injection tretiranjem korisničkog unosa kao podataka, a ne izvršnog koda.
  • Poboljšava ponovna upotreba i održavanje SQL naredbi.

U objektu Command, parametri se dodaju zasebno, što osigurava sigurnije i učinkovitije izvršavanje.


10) Kako transakcije funkcioniraju u ADO.NET-u?

Transakcija u ADO.NET-u osigurava da skup operacija se izvršava kao jedna cjelinaTransakciju pokrećete pomoću objekta Connection, izvršavate više naredbi unutar njega, a zatim bilo počiniti (spremi sve promjene) ili povrat na staro (poništavanje promjena) na temelju uspjeha ili neuspjeha. To jamči integritet podataka, posebno u scenarijima poput prijenosa sredstava, gdje djelomična ažuriranja mogu dovesti do nekonzistentnih stanja.


11) Koja je uloga DataAdaptera u ADO.NET-u?

A Adapter podataka djeluje kao a most između skupa podataka i izvora podataka, Koristi Objekti naredbi (Odaberi, Umetni, Ažuriraj, Izbriši) za dohvaćanje podataka iz baze podataka u DataSet i za sinkronizaciju promjena natrag u bazu podataka. DataAdapter automatski upravlja otvaranjem i zatvaranjem veze prilikom popunjavanja ili ažuriranja podataka.

Glavne metode uključuju:

  • Ispuni() – Popunjava DataSet podacima iz izvora podataka.
  • Ažurirati() – Šalje promjene iz DataSeta natrag u bazu podataka.

Ovaj pristup je ključan za ADO.NET nepovezana arhitektura, što omogućuje aplikacijama manipuliranje podacima izvan mreže i kasnije učinkovito pohranjivanje promjena.


12) Objasnite razliku između ExecuteReader(), ExecuteScalar() i ExecuteNonQuery().

The Objekt naredbe U ADO.NET-u su predstavljene tri ključne metode za izvršavanje SQL naredbi:

način Povratak Tipična upotreba Primjer
IzvršiČitač() DataReader SELECT izjave Čitanje zapisa
IzvršiSkalar() Jedna vrijednost Agregirani upiti (COUNT, SUM) Dohvaćanje redaka s ukupnim brojem
IzvršiNeUpit() Cijeli broj (zahvaćeni retci) UMETNI, AŽURIRAJ, IZBRIŠI Izmjena podataka

Primjer:

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

Ovdje, IzvršiSkalar() učinkovito dohvaća jednu vrijednost bez učitavanja punih skupova podataka, poboljšavajući performanse.


13) Čemu služi klasa DataView u ADO.NET-u?

The DataView klasa pruža a prilagođeni, dinamički prikaz podataka unutar DataTable-aOmogućuje programerima da sortiranje, filtriranje ili pretraživanje podataka bez mijenjanja temeljne tablice. DataView je koristan za prikaz filtriranih podataka u UI komponentama kao što su DataGridView ili ListView.

Na primjer:

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

Filtrirani prikaz se zatim može izravno vezati za elemente korisničkog sučelja, poboljšavajući performanse izbjegavanjem višestrukih poziva bazi podataka.


14) Koje su ključne razlike između ADO-a i ADO.NET-a?

svojstvo TEŠKOĆA ADO.NET
Architektura povezan Povezano i nepovezano
Pohranu podataka Skup zapisa Skup podataka (baziran na XML-u)
skalabilnost Nizak visok
XML podrška ograničen Full
Pristup podacima COM-bazirano Upravljani kod (.NET)

Objašnjenje: ADO.NET pruža bogatiji, skalabilniji i XML-integrirani model nego tradicionalni ADO. Optimiziran je za distribuirane i web-bazirane aplikacije, podržavajući nepovezane operacije s podacima i XML serijalizaciju za interoperabilnost.


15) Kako ADO.NET rješava probleme konkurentnosti?

Konflikti istodobnosti nastaju kada više korisnika istovremeno mijenja iste podatke. ADO.NET pruža više strategije za upravljanje konkurentnošću:

  1. Optimistična istodobnost: Podaci se smatraju nepromijenjenima do ažuriranja. DataAdapter provjerava izvorne vrijednosti prije slanja ažuriranja.
  2. Pesimistična istodobnost: Podaci se zaključavaju prilikom čitanja ili izmjene, što sprječava istovremeni pristup.

U većini stvarnih .NET aplikacija, optimistična konkurentnost preferira se zbog svojih performansi i skalabilnosti.


16) Koji je značaj DataRelation-a u ADO.NET-u?

The Relacija podataka objekt definira odnos roditelj-dijete između dvije tablice podataka unutar DataSeta. Omogućuje navigaciju između povezanih zapisa, slično ograničenjima vanjskog ključa baze podataka.

Primjer:

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

To omogućuje hijerarhijski prolaz podataka pomoću DohvatiRedovePodređenih() i DohvatiRodnik(), što ga čini moćnim za predstavljanje relacijskih struktura u memoriji.


17) Koja je razlika između SqlCommand i SqlDataAdapter?

svojstvo SqlCommand SqlDataAdapter
Svrha Izvršava jednu SQL naredbu Djeluje kao most između DataSeta i baze podataka
priključak Zahtijeva otvorenu vezu Automatski upravlja vezom
Model podataka povezan rastavljen
Upotreba Naredbe u stvarnom vremenu Izvanmrežna ažuriranja i sinkronizacija

Primjer: Koristiti SqlCommand prilikom izvođenja izravnih upita (npr. INSERT, SELECT). Koristite SqlDataAdapter za nepovezane operacije poput popunjavanja i ažuriranja skupova podataka.


18) Koje su različite vrste naredbi u ADO.NET-u?

ADO.NET podržava sljedeće Vrsta naredbe vrijednosti:

  1. Tekst: Zadani tip za sirove SQL upite.
  2. Pohranjena procedura: Izvršava unaprijed definirane pohranjene procedure.
  3. TableDirect: Dohvaća sve retke iz određene tablice (za OLE DB pružatelje usluga).

Korištenje pohranjenih procedura poboljšava sigurnost i performanse, dok Tekst idealan je za dinamičke upite.


19) Što je skup podataka (DataSet) i koja su njegova glavna svojstva?

A Skup podataka je prikaz podataka u memoriji sastoji se od više tablica, relacija i ograničenja. Podržava nepovezani pristup i pohranu podataka temeljenu na XML-u.

Ključna svojstva:

  • tablice: Kolekcija objekata DataTable.
  • Odnosi: Odnosi između tablica.
  • Ograničenja: Održavajte integritet podataka (npr. UniqueConstraint, ForeignKeyConstraint).
  • ImaPromjene: Označava jesu li podaci izmijenjeni.

Skup podataka omogućuje operacije s velikim količinama podataka i manipulaciju izvan mreže, što ga čini idealnim za distribuirane aplikacije.


20) Objasnite razliku između metoda Fill() i Update() u ADO.NET-u.

način Svrha Zahtjev za povezivanje
Ispuni() Popunjava DataSet podacima iz izvora podataka Automatski otvara i zatvara vezu
Ažurirati() Šalje modificirane podatke DataSeta natrag u bazu podataka Automatski otvara i zatvara vezu

Objašnjenje:

  • Ispuni(): Čita podatke iz izvora u tablice DataSet pomoću SelectCommand.
  • Ažurirati(): Primjenjuje promjene INSERT, UPDATE ili DELETE u DataSetu natrag u bazu podataka. Ove dvije metode zajedno tvore jezgra nepovezanih operacija s podacima u ADO.NET-u.

21) Koja je uloga objekta Connection u ADO.NET-u?

The Objekt povezivanja uspostavlja a veza između aplikacije i izvora podatakaPruža metode i svojstva za otvoriti, zatvoriti i upravljati povezivost s bazom podataka. Tipičan objekt povezivanja varira ovisno o pružatelju usluga - na primjer, SQLConnection za SQL Server i OleDbConnection za OLE DB izvore.

Ključna svojstva:

  • ConnectionString – Definira vjerodajnice i konfiguraciju baze podataka.
  • Država – Označava je li veza otvorena ili zatvorena.
  • PočetakTransakcije() – Pokreće transakciju s bazom podataka.

Primjer:

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

Učinkovito upravljanje vezama ključno je za performanse, posebno u aplikacijama s velikim prometom.


22) Kako se na primjeru rješavaju transakcije u ADO.NET-u?

Transakcija osigurava valentnost — sve operacije ili uspijevaju ili ne uspijevaju zajedno. ADO.NET pruža SQLTransakcija razred za ovo.

Primjer:

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();
}

To osigurava dosljednost podataka u slučaju pogrešaka ili iznimaka tijekom izvođenja.


23) Koje su prednosti korištenja pohranjenih procedura s ADO.NET-om?

Pohranjene procedure nude više prednosti u odnosu na inline SQL upite:

Prednost Description
Izvođenje Unaprijed kompilira i pohranjuje u predmemoriju na poslužitelju, smanjujući vrijeme izvršavanja.
Sigurnost Štiti od SQL injekcije korištenjem parametara.
sposobnost snabdijevanja Poslovna logika se nalazi u bazi podataka radi lakšeg ažuriranja.
Reus Sposobnost Može se pozvati iz više aplikacija ili modula.

Primjer:

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

Dakle, kombiniranje ADO.NET-a s pohranjenim procedurama dovodi do učinkovitog i sigurnog rada s bazom podataka.


24) Koja je razlika između Dataset.AcceptChanges() i DataAdapter.Update()?

svojstvo PrihvatiPromjene() DataAdapter.Update()
OperaANJE Lokalno potvrđuje promjene u DataSetu Sprema promjene u bazu podataka
Interakcija s bazom podataka Ne Da
Posljedica Označava sve retke kao "Nepromijenjene" Izvršava SQL naredbe (Umetanje, Ažuriranje, Brisanje)

Objašnjenje: zvanje PrihvatiPromjene() ažurira samo interno stanje DataSeta bez pohranjivanja u bazu podataka. Za trajno pohranjivanje promjena, Ažurirati() mora se koristiti. U praksi, programeri prvo koriste Ažurirati() za spremanje podataka, a zatim PrihvatiPromjene() za lokalno finaliziranje promjena.


25) Kako možete raditi s XML podacima u ADO.NET-u?

ADO.NET pruža besprijekorno integracija s XML-om za pohranu, razmjenu i transformaciju podataka.

Ključne metode:

  • WriteXml() – Zapisuje sadržaj DataSeta u XML datoteku.
  • ReadXml() – Čita podatke iz XML datoteke u DataSet.
  • GetXml() – Vraća XML prikaz DataSeta kao niz znakova.
  • DohvatiXmlSchemu() – Vraća shemu u XML formatu.

Primjer:

dataSet.WriteXml("Employees.xml");

Ova značajka omogućuje jednostavno dijeljenje podataka između heterogenih sustava koristeći XML kao međuformat.


26) Koja je svrha objekata DataColumn i DataRow u ADO.NET-u?

U ADO.NET-u, Stupac podataka i Redak podataka formiraju građevne blokove tablica podataka u memoriji:

  • Stupac podataka: Definira shemu - naziv, tip podataka, ograničenja i zadane vrijednosti.
  • Redak podataka: Predstavlja stvarni zapis (redak) podataka u DataTable-u.

Primjer:

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

Zajedno omogućuju strukturiranu manipulaciju podacima u nepovezanom okruženju.


27) Kako ADO.NET podržava validaciju podataka i ograničenja?

ADO.NET osigurava integritet podataka putem ograničenja na razinama DataSet i DataTable:

Ograničenje Svrha
JedinstvenoOgraničenje Osigurava da su vrijednosti stupaca jedinstvene.
Ograničenje vanjskog ključa Održava referencijalni integritet između povezanih tablica.
Svojstvo DefaultValue Definira zadane vrijednosti stupaca.

Primjer:

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

Ova ograničenja repliciraju pravila na razini baze podataka u memoriji, osiguravajući čiste i konzistentne podatke prije sinkronizacije.


28) Koja je razlika između OLE DB i ODBC pružatelja usluga u ADO.NET-u?

Davatelj Svrha Prostor
OLE DB (.NET Framework pružatelj podataka za OLE DB) Koristi se za MS Access i druge OLE DB-kompatibilne baze podataka System.Data.OleDb
ODBC (.NET Framework pružatelj podataka za ODBC) Koristi se za baze podataka s ODBC upravljačkim programima kao što su MySQL System.Data.Odbc

Objašnjenje:

  • NEMA DB obično je brži s Microsoft tehnologije.
  • ODBC pruža širu kompatibilnost na različitim platformama baza podataka.

29) Kako poboljšavate performanse u ADO.NET aplikacijama?

Podešavanje performansi u ADO.NET-u uključuje optimizaciju pristupa bazi podataka i obrade u memoriji:

Najbolje prakse:

  1. Koristiti priključak Pooling i uvijek brzo prekidajte veze.
  2. preferiraju DataReader za podatke samo za čitanje.
  3. Koristiti parametrizirani upiti umjesto dinamičkog SQL-a.
  4. Minimizirajte prijenos podataka pomoću ODABERI određene stupce.
  5. Moć pohranjene procedure za složenu logiku.
  6. Podaci iz predmemorije gdje je to primjenjivo pomoću Predmemoriranje skupa podataka.
  7. Pravilno odložite predmete s using blokovi.

Ove mjere poboljšavaju skalabilnost, smanjuju latenciju i smanjuju opterećenje baze podataka.


30) Koje su glavne razlike između DataTable i DataSet?

Aspekt DataTable Skup podataka
Struktura Jedan stol Kolekcija više DataTables
Odnosi Nije podržano Podržava odnose između tablica
ograničenja ograničen Podržava ograničenja jedinstvenog i stranog ključa
XML Operama Djelomična Potpuna podrška za čitanje/pisanje XML-a
Koristite slučaj Jednostavne operacije s podacima Složene strukture podataka i manipulacija izvan mreže

Objašnjenje: A DataTable idealan je za prikaz podataka u jednoj tablici, dok je Skup podataka koristi se za složene scenarije s više tablica s odnosima i ograničenjima. Oba podržavaju nepovezano rukovanje podacima, ali se razlikuju po veličini i opsegu.


31) Čemu služi asinhrono programiranje u ADO.NET-u?

Asinkrono programiranje u ADO.NET-u omogućuje neblokirajuće operacije baze podataka, poboljšavajući responzivnost aplikacije, posebno u web i UI sustavima. Omogućuje vašoj aplikaciji obavljanje drugih zadataka dok čeka dovršetak operacija baze podataka.

ADO.NET nudi asinhrone metode kao što su:

  • OpenAsync() – Asinkrono otvara vezu.
  • IzvršiReaderAsync() – Izvršava naredbu i asinkrono dohvaća rezultate.
  • IzvršiNeUpitAsinkrono() – Asinkrono izvršava SQL naredbe.
  • IzvršiSkalarAsinkronost() – Asinkrono vraća jednu vrijednost.

Primjer:

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

Prednosti: Poboljšana skalabilnost, bolje korisničko iskustvo i učinkovito korištenje resursa u aplikacijama s puno ulazno/izlaznih operacija.


32) Koja je razlika između DataReadera i DataAdaptera u smislu performansi i korištenja?

Aspekt DataReader Adapter podataka
priključak povezan rastavljen
Izvođenje Brže (streaming) Sporije (u memoriji)
Pristup podacima Samo za čitanje, samo za prosljeđivanje Uređivati, slučajni pristup
Memorija Običaj Nizak Viša (pohranjuje podatke u memoriju)
Koristite slučaj Brzo prikazivanje podataka Uređivanje i sinkronizacija izvan mreže

Objašnjenje: Za prikaz podataka u stvarnom vremenu, Koristite DataReader. Forum manipulacija podacima izvan mreže, Koristite Adapter podatakaDataReader je idealan za skalabilnost, dok DataAdapter odgovara bogatim aplikacijama vođenim podacima.


33) Kako se ADO.NET integrira s LINQ-om?

LINQ (Language Integrated Query) pruža moderan način za upiti ADO.NET strukturama podataka kao što su DataSet i DataTable korištenjem C# sintakse umjesto SQL-a.

Primjer:

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

Prednosti:

  • Sigurnost tipova prilikom kompajliranja.
  • Nema potrebe za SQL stringovima u kodu.
  • Lakše otklanjanje pogrešaka i održavanje.

LINQ-to-DataSet izrađuje ADO.NET upite čitljiviji, održiviji i učinkovitiji.


34) Čemu služi DataTableReader u ADO.NET-u?

A Čitač tablica podataka osigurava samo naprijed, samo za čitanje pristup jednoj ili više DataTables u DataSetu. Funkcionira kao DataReader, ali za podatke u memoriji.

Primjer:

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

Ovaj pristup omogućuje brzo kretanje kroz podatke u memoriji, a pritom nepovezani model ostaje netaknut.


35) Kako možete pozvati pohranjenu proceduru koja ima parametre koristeći ADO.NET?

Možete koristiti SqlCommand objekt s parametrima za sigurno pozivanje pohranjenih procedura.

Primjer:

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

Ovaj pristup sprječava SQL Injection, pruža vrsta sigurnosti, i omogućuje rukovanje ulazno/izlaznim parametrima u poslovnim aplikacijama.


36) Koje su prednosti i nedostaci korištenja DataSeta u ADO.NET-u?

Prednosti Nedostaci
Radi u isključenom načinu rada Troši više memorije
Može pohraniti više tablica Sporije od DataReadera
Podržava odnose i ograničenja Nije idealno za velike skupove podataka
Podrška za XML integraciju Dodatni troškovi serijalizacije

Sažetak: Skupovi podataka idealni su za složene, offline operacije ili pri radu s XML/web servisima. Za visokoučinkovite aplikacije ili aplikacije u stvarnom vremenu, preferirajte DataReader or Adapter podataka za učinkovitost.


37) Kako možete riješiti pogreške u ADO.NET operacijama?

Obrada grešaka se vrši pomoću pokušaj-uhvati-napokon blokovi i SqlException klase.

Primjer:

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

Najbolje prakse:

  • Zabilježite SQL iznimke pomoću strukturiranog zapisivanja (npr. Serilog, NLog).
  • Koristiti finally or using blokovi kako bi se osiguralo zatvaranje veza.
  • Izbjegavajte otkrivanje osjetljivih poruka o pogreškama u produkciji.

38) Koja je uloga CommandBuildera u ADO.NET-u?

The CommandBuilder automatski generira SQL naredbe (INSERT, UPDATE, DELETE) za DataAdapter na temelju njegove SELECT naredbe. To eliminira potrebu za ručnim pisanjem upita za ažuriranje.

Primjer:

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

Korisno je za brzi razvoj, ali se ne preporučuje za složeni upiti ili spajanja, gdje ručno napisane naredbe pružaju veću kontrolu.


39) Kako implementirati grupiranje veza u ADO.NET-u?

Povezivanje veza ponovno koristi postojeće veze s bazom podataka umjesto stvaranja novih za svaki zahtjev, poboljšavajući performanse.

Primjer niza za povezivanje:

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

Radna:

  • Kada se veza zatvori, ona se vraća u skup umjesto da bude uništena.
  • ADO.NET dohvaća združene veze za sljedeće zahtjeve.

Prednosti:

  • Smanjuje opterećenje veze.
  • Poboljšava skalabilnost pod velikim opterećenjem.
  • Automatski upravlja .NET runtime.

40) Koje su glavne razlike između ExecuteReader(), ExecuteScalar() i ExecuteNonQuery()?

način Tip povrata Koristite slučaj Primjer upita
IzvršiČitač() DataReader Dohvati više redaka SELECT * FROM Zaposlenici
IzvršiSkalar() Jedna vrijednost Agregatne funkcije ODABERI BROJ(*) IZ ZAPOSLENIKA
IzvršiNeUpit() Cijeli broj (zahvaćeni retci) DML izjave AŽURIRANJE Zaposlenici POSTAVLJENA Plaća=5000

Primjer:

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

Svaka metoda služi određenoj svrsi: IzvršiČitač() za čitanje podataka, IzvršiSkalar() za brze pretrage i IzvršiNeUpit() za izmjene.


41) Koja je razlika između ExecuteXmlReader() i ExecuteReader()?

Obje metode se koriste za čitanje podataka iz baze podataka, ali se razlikuju po izlazni format i namjena.

Aspekt IzvršiČitač() IzvršiXmlReader()
Povratak Objekt DataReader XML podaci kao XmlReader
Tip podataka tabličast XML dokument
Upotreba Čitanje strukturiranih redaka Dohvaćanje podataka u XML formatu
Izvođenje Brže za relacijske podatke Korisno za XML-bazirane aplikacije

Primjer:

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

IzvršiXmlReader() se uglavnom koristi pri integraciji .NET-a s web servisima, REST API-jima ili XML pohranama podataka.


42) Kako upravljate višestrukim skupovima rezultata pomoću ADO.NET-a?

ADO.NET-ovi SqlDataReader podržava više skupova rezultata pomoću SljedećiRezultat() metoda. To vam omogućuje obradu više upita izvršenih u jednoj naredbi.

Primjer:

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"]);
}

Ovaj pristup je učinkovit pri dohvaćanju povezanih podataka u jednom krugu do baze podataka, smanjujući latenciju.


43) U kojim scenarijima iz stvarnog svijeta se ADO.NET preferira u odnosu na Entity Framework?

Iako Entity Framework (EF) moderan i ORM-baziran, ADO.NET ostaje relevantan zbog svog performanse, kontrola i jednostavnost u određenim slučajevima upotrebe:

  1. Visokoučinkoviti slojevi za pristup podacima (bankarstvo, trgovački sustavi).
  2. Lagane aplikacije gdje potpuni ORM opterećenji nisu potrebni.
  3. Grupna obrada ili operacije s velikim brojem podataka.
  4. Integracija naslijeđenog sustava s pohranjenim procedurama.
  5. Finozrna kontrola preko SQL-a i životnog ciklusa veze.

Ukratko:

Koristite ADO.NET kada Trebate brzinu, kontrolu i ručnu optimizacijui EF kada brzi razvoj i apstrakcija su prioritet.


44) Koja je razlika između ADO.NET Entity Data Modela i tradicionalnog ADO.NET-a?

Aspekt ADO.NET Model podataka o entitetu (EDM)
Pristup Pristup podacima niske razine ORM (objektno-relacijsko mapiranje)
Jezik upita SQL naredbe LINQ / Entity SQL
Izvođenje Brža, ručna optimizacija Sporije, dodatni troškovi apstrakcije
Zastupanje podataka Tablice i retci Entiteti i odnosi
Razvojni napor visok Spustite

Sažetak: The Model podataka entiteta automatizira mapiranje objekata u tablicu i prevođenje upita, dok ADO.NET daje programerima potpunu kontrolu po cijenu više ručnog kodiranja.


45) Kako osigurati pristup bazi podataka u ADO.NET aplikacijama?

Sigurnost u ADO.NET-u se vrti oko zaštita nizova za povezivanje, sprječavanje SQL injekcije i osiguravanje pristupa s najmanjim privilegijama.

Najbolje prakse:

  1. Koristite parametrizirane upite — Izbjegavajte spajanje SQL nizova.
  2. Šifriraj nizove za povezivanje in web.config pomoću: aspnet_regiis -pef "connectionStrings" "C:\AppFolder"
  3. Koristiti Windows Ovjera umjesto SQL autentifikacije gdje je to moguće.
  4. Izbjegavajte pohranjivanje vjerodajnica u običnom tekstu.
  5. Validiraj sve korisničke unose prije izvršavanja baze podataka.

Primjer (Sigurna naredba):

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

Ove mjere značajno smanjuju rizik od SQL injekcije i izlaganja vjerodajnica.


46) Kako možete učinkovito izvoditi operacije skupnog umetanja u ADO.NET-u?

Za unos velikih količina podataka, SqlBulkCopy pruža najbržu metodu u ADO.NET-u.

Primjer:

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

Prednosti:

  • Brzo ubacuje tisuće zapisa.
  • Idealno za ETL (Ekstrakcija, Transformacija, Učitavanje) scenarije.
  • Smanjuje kružna putovanja između aplikacije i baze podataka.

Bilješka: SqlBulkCopy najbolje funkcionira za SQL Server i zahtijeva odgovarajuće usklađivanje shema tablice.


47) Koja je razlika između metoda FillSchema() i Fill() u DataAdapteru?

način Svrha Učinak na shemu
Ispuni() Učitava samo podatke Ne dohvaća shemu
FillSchema() Učitava podatke + shemu Dohvaća definicije stupaca, tipove podataka, ograničenja

Primjer:

dataAdapter.FillSchema(dataSet, SchemaType.Source);

Koristiti FillSchema() kada je prije manipuliranja ili povezivanja podataka potrebna struktura tablice (stupci, tipovi podataka).


48) Koje su najbolje prakse za korištenje objekata SqlConnection i SqlCommand?

  1. Koristiti using izvještaji kako bi se osiguralo pravilno odlaganje:
  2. using (SqlConnection con = new SqlConnection(connString))
    {
        con.Open();
        // operations
    }
    
  3. Izbjegavajte držanje veza otvorenima dulje nego što je potrebno.
  4. Koristite skupljanje veza (omogućeno prema zadanim postavkama).
  5. Ponovno upotrijebite SqlCommand objekte za slične operacije s parametrima.
  6. Graciozno rukovanje iznimkama korištenjem try-catch-finally metode.
  7. Izbjegavajte SELECT *; eksplicitno navedite stupce.

Pridržavanje ovih praksi osigurava visoke performanse i robusno upravljanje resursima.


49) Kako možete otkriti i riješiti zastoje u ADO.NET-u?

A zastoj događa se kada dvije ili više transakcija blokiraju jedna drugu. U ADO.NET-u to obično rezultira SqlException sa Broj pogreške 1205.

Strategija rukovanja:

  1. Uhvatite iznimku i ponovno pokušajte transakciju.
  2. Zadrži transakcije kratko i učinkovito.
  3. Pristup tablicama u dosljedan redoslijed preko transakcija.
  4. Koristite odgovarajuće razine izolacije transakcija poput ReadCommitted.
  5. Nadgledajte zastoje pomoću SQL Profiler ili prošireni događaji.

Primjer (logika ponovnog pokušaja):

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

50) Koje su prednosti i nedostaci korištenja ADO.NET-a u odnosu na druge tehnologije pristupa podacima?

Prednosti Nedostaci
Visoke performanse i fina kontrola Zahtijeva više standardnog koda
Podržava povezane i nepovezane modele Nema ugrađenog ORM mapiranja
Radi s više izvora podataka Ručno održavanje SQL-a
Potpuna integracija XML-a i skupa podataka Sklonije greškama za početnike
Lagan i bez ovisnosti Teže skaliranje sa složenim modelima domena

Sažetak: ADO.NET ostaje temelj svih .NET slojeva za pristup podacima, ponuda brzina, fleksibilnost i transparentnost. Tehnologije poput Entitetski okvir i Dotjeran izgrađeni su na ADO.NET-u, što njihovo poznavanje čini ključnim za ozbiljne .NET programere.


🔍 Najčešća pitanja za intervju za ADO.NET sa stvarnim scenarijima i strateškim odgovorima

1) Što je ADO.NET i gdje se obično koristi u poslovnim aplikacijama?

Očekivano od kandidata: Anketar želi procijeniti vaše temeljno razumijevanje ADO.NET-a i njegove uloge u aplikacijama vođenim podacima, posebno unutar .NET ekosustava.

Primjer odgovora: ADO.NET je okvir za pristup podacima u .NET-u koji se koristi za povezivanje aplikacija s relacijskim bazama podataka kao što je SQL Server. Pruža klase za dohvaćanje, manipuliranje i ažuriranje podataka putem povezanih i nepovezanih modela. Često se koristi u poslovnim aplikacijama za pouzdanu i skalabilnu komunikaciju s bazama podataka.


2) Možete li objasniti razliku između povezanih i nepovezanih arhitektura u ADO.NET-u?

Očekivano od kandidata: Anketar procjenjuje vaše razumijevanje performansi i skalabilnosti u pristupu bazi podataka.

Primjer odgovora: Povezana arhitektura koristi objekte poput SqlDataReader-a, koji zahtijevaju otvorenu vezu s bazom podataka tijekom čitanja podataka. Nepovezana arhitektura koristi DataSet i DataTable, što omogućuje učitavanje podataka u memoriju i rano zatvaranje veze s bazom podataka, poboljšavajući skalabilnost i smanjujući korištenje resursa.


3) Po čemu se DataSet i DataReader razlikuju i kada biste odabrali jedan u odnosu na drugi?

Očekivano od kandidata: Anketar želi vidjeti možete li odabrati odgovarajuće alate na temelju performansi i potreba primjene.

Primjer odgovora: DataReader je samo za prosljeđivanje i samo za čitanje, što ga čini bržim i memorijski učinkovitijim za velike skupove rezultata. DataSet je u memoriji i podržava više tablica i odnosa. U svojoj prethodnoj ulozi koristio sam DataReader za visokoučinkovite značajke izvješćivanja i DataSet za scenarije koji zahtijevaju izvanmrežnu manipulaciju podacima.


4) Kako učinkovito upravljate vezama s bazom podataka u ADO.NET-u?

Očekivano od kandidata: Anketar provjerava vaše poznavanje najboljih praksi vezanih uz upravljanje resursima.

Primjer odgovora: Učinkovito rukovanje vezama uključuje otvaranje veza što je kasnije moguće i njihovo zatvaranje čim je posao završen. Korištenje naredbe using osigurava pravilno odlaganje veza. Grupiranje veza u ADO.NET-u također pomaže u poboljšanju performansi ponovnom upotrebom postojećih veza.


5) Što su parametrizirani upiti i zašto su važni?

Očekivano od kandidata: Anketar želi procijeniti vaše razumijevanje sigurnosti i sprječavanja SQL injekcija.

Primjer odgovora: Parametrizirani upiti odvajaju SQL logiku od korisničkog unosa, što pomaže u sprječavanju SQL injekcijskih napada. Također poboljšavaju performanse omogućujući ponovnu upotrebu plana upita. Na mom prethodnom poslu, parametrizirani upiti bili su obvezni za sve operacije s bazom podataka kako bi se održali sigurnosni standardi.


6) Opišite situaciju u kojoj ste morali optimizirati spor rad baze podataka koristeći ADO.NET.

Očekivano od kandidata: Ispitivač procjenjuje vaše vještine rješavanja problema i iskustvo u optimizaciji učinka.

Primjer odgovora: Na prethodnoj poziciji sam identificirao spor upit uzrokovan nepotrebnim korištenjem DataSeta. Zamijenio sam ga sa SqlDataReaderom i optimizirao sam SQL upit, što je značajno smanjilo vrijeme izvršavanja i potrošnju memorije.


7) Kako se rješavaju iznimke u ADO.NET aplikacijama?

Očekivano od kandidata: Anketar želi razumjeti vaš pristup rješavanju pogrešaka i stabilnosti aplikacije.

Primjer odgovora: Koristim blokove try-catch-finally za obradu iznimki kao što je SqlException. Zapisivanje detalja o pogrešci i osiguravanje zatvaranja veza u bloku finally su ključni. Ovaj pristup pomaže u održavanju stabilnosti aplikacije i pojednostavljuje rješavanje problema.


8) Što je DataAdapter i kako funkcionira sa DataSetom?

Očekivano od kandidata: Anketar provjerava vaše razumijevanje koncepata sinkronizacije podataka.

Primjer odgovora: DataAdapter djeluje kao most između DataSeta i baze podataka. Koristi naredbe Select, Insert, Update i Delete za popunjavanje DataSeta i širenje promjena natrag u bazu podataka. To je korisno u nepovezanim scenarijima gdje su potrebna skupna ažuriranja.


9) Kako biste dizajnirali ADO.NET-bazirano rješenje za aplikaciju s visokom konkurentnošću?

Očekivano od kandidata: Anketar želi procijeniti vaše arhitektonsko razmišljanje i razmatranja skalabilnosti.

Primjer odgovora: Minimizirao bih vrijeme otvorene veze, koristio grupiranje veza, preferirao DataReader gdje je to moguće i osigurao učinkovite SQL upite. U mojoj posljednjoj ulozi, ovaj pristup pomogao je u podršci velikog broja istovremenih korisnika bez uskih grla u bazi podataka.


10) Kako osiguravate održivost i mogućnost testiranja u ADO.NET kodu?

Očekivano od kandidata: Anketar traži čiste prakse kodiranja i dugoročno razmišljanje.

Primjer odgovora: Održavanje osiguravam odvajanjem logike pristupa podacima u repozitorije ili slojeve pristupa podacima. Korištenje jasnog imenovanja metoda, parametriziranih upita i centraliziranog upravljanja vezama poboljšava čitljivost i mogućnost testiranja. Jedinični testovi mogu se pisati apstrahiranjem operacija baze podataka iza sučelja.

Sažmite ovu objavu uz: