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

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:
- Optimistiฤna istodobnost: Podaci se smatraju nepromijenjenima do aลพuriranja. DataAdapter provjerava izvorne vrijednosti prije slanja aลพuriranja.
- 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:
- Tekst: Zadani tip za sirove SQL upite.
- Pohranjena procedura: Izvrลกava unaprijed definirane pohranjene procedure.
- 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:
- Koristiti prikljuฤak Pooling i uvijek brzo prekidajte veze.
- preferiraju DataReader za podatke samo za ฤitanje.
- Koristiti parametrizirani upiti umjesto dinamiฤkog SQL-a.
- Minimizirajte prijenos podataka pomoฤu ODABERI odreฤene stupce.
- Moฤ pohranjene procedure za sloลพenu logiku.
- Podaci iz predmemorije gdje je to primjenjivo pomoฤu Predmemoriranje skupa podataka.
- Pravilno odloลพite predmete s
usingblokovi.
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
finallyorusingblokovi 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:
- Visokouฤinkoviti slojevi za pristup podacima (bankarstvo, trgovaฤki sustavi).
- Lagane aplikacije gdje potpuni ORM optereฤenji nisu potrebni.
- Grupna obrada ili operacije s velikim brojem podataka.
- Integracija naslijeฤenog sustava s pohranjenim procedurama.
- 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:
- Koristite parametrizirane upite โ Izbjegavajte spajanje SQL nizova.
- ล ifriraj nizove za povezivanje in
web.configpomoฤu:aspnet_regiis -pef "connectionStrings" "C:\AppFolder" - Koristiti Windows Ovjera umjesto SQL autentifikacije gdje je to moguฤe.
- Izbjegavajte pohranjivanje vjerodajnica u obiฤnom tekstu.
- 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?
- Koristiti
usingizvjeลกtaji kako bi se osiguralo pravilno odlaganje: - Izbjegavajte drลพanje veza otvorenima dulje nego ลกto je potrebno.
- Koristite skupljanje veza (omoguฤeno prema zadanim postavkama).
- Ponovno upotrijebite SqlCommand objekte za sliฤne operacije s parametrima.
- Graciozno rukovanje iznimkama koriลกtenjem try-catch-finally metode.
- Izbjegavajte SELECT *; eksplicitno navedite stupce.
using (SqlConnection con = new SqlConnection(connString))
{
con.Open();
// operations
}
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:
- Uhvatite iznimku i ponovno pokuลกajte transakciju.
- Zadrลพi transakcije kratko i uฤinkovito.
- Pristup tablicama u dosljedan redoslijed preko transakcija.
- Koristite odgovarajuฤe razine izolacije transakcija poput
ReadCommitted. - 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.
