Theory
Till और Vault के बीच पाँच Workers
ShopKeeper के form और ShopDB file के बीच एक छोटी crew बैठती है, और .NET में जो भी database program आप लिखते हैं वह same 5 workers hire करता है।
एक phone line खुली रखता है। एक आपका SQL sentence carry करता है। एक line live रहते हुए आपको answers वापस पढ़ता है। एक पूरी pickup-and-delivery करता है ताकि आप phone रख सकें। और एक आप पहले से जानते हैं: Unit 3 का in-memory register।
पाँचों को नाम दीजिए, हर एक का single job जानिए, और इस unit के theory questions पहले से answered हैं।
Theory
Wholesaler को Call करना
ShopDB को शहर के उस पार वाला wholesaler समझिए।
Connection phone line है: एक number (connection string) से dial की गई, खोली गई, आख़िर में hang up की गई। Command वह sentence है जो आप बोलते हैं: एक order, SQL में। DataReader live call पर सुन रहा है, items को scribble कर रहा है जैसे-जैसे वे पढ़े जाते हैं, कोई वापस जाना नहीं, कोई editing नहीं। DataAdapter delivery boy है: एक trip, पूरा order घर लाता है, जहाँ यह आपके अपने register (DataSet) में बैठता है ताकि call खत्म होने के बाद आप काम कर सकें।
At a glance
ADO.NET Object Model (यह Table सीखिए)
| Object | एक Job | Key Members |
|---|---|---|
| Connection | Database के लिए खुली line | ConnectionString, Open(), Close() |
| Command | एक SQL statement carry करता है | CommandText, ExecuteReader, ExecuteNonQuery, ExecuteScalar |
| DataReader | Result rows stream करता है, connected | Read(), item access rd("Amount") |
| DataAdapter | Disconnected world का bridge | Fill(ds), Update(ds) |
| DataSet | In-memory, offline copy (Unit 3) | Tables, Rows |
Theory
दो Working Styles
5 workers 2 teams बनाते हैं, और यह split इस unit का THE concept है:
- Connected: Connection + Command + DataReader। आप जब पढ़ रहे हों तब line खुली रहती है; fastest, हमेशा current, पर reader forward-only और read-only है, और database पूरे समय आपकी call hold करता है।
- Disconnected: Connection + DataAdapter + DataSet। एक trip में सब कुछ fetch कीजिए, hang up कीजिए, फिर offline browse, edit और grids bind कीजिए; Update() बाद में changes वापस sync करता है।
ShopKeeper एक reader से bill print करता है (quick pass), पर day-report screen adapter चाहता है (offline browse, कोई line खुली नहीं रखी)।
Theory
Providers: Same Crew, अलग Uniforms
ADO.NET हर database brand के लिए एक crew ship करता है, जिसे provider कहते हैं:
- SQL Server के लिए System.Data.SqlClient: SqlConnection, SqlCommand, SqlDataReader, SqlDataAdapter
- Access files के लिए System.Data.OleDb: OleDbConnection, OleDbCommand, वगैरह
Same 5 roles, same members, सिर्फ़ prefix बदलता है। और नोटिस कीजिए कौन से object के पास कोई prefix नहीं है: DataSet provider-neutral है, क्योंकि एक बार data memory में आ जाए, इसकी origin अब matter नहीं करती। वह detail एक recurring 1-marker है।
Quiz
कौन सा ADO.NET object connected, forward-only और read-only है?
- DataSet
- DataAdapter
- DataReader
- Command
Show the answer
DataReader
वह 3-word signature (connected, forward-only, read-only) DataReader का exam fingerprint HAI: यह एक live connection से rows stream करता है, rewind नहीं कर सकता, edit नहीं कर सकता। DataSet हर word में इसका near-opposite है: disconnected, freely navigable, editable। DataAdapter 2 worlds के बीच courier है, खुद किसी चीज़ का reader नहीं। Command सिर्फ़ SQL carry करता है; यह एक reader return करता है पर खुद एक नहीं है। Fingerprint phrase memorise कीजिए: examiners इसे verbatim quote करते हैं।
Think first
2 Screens को Staff कीजिए
Screen A: cashier bill 42 reprint करता है, इसकी rows से एक quick pass। Screen B: owner घर पर एक महीने के bills browse करता है, remarks edit करता है, बाद में sync करता है। Tap करने से पहले हर screen को objects की team assign कीजिए।
Show the answer
Screen A: connected team: SqlConnection (open), SqlCommand (SELECT ... WHERE BillNo = 42), SqlDataReader (एक forward pass, print, close): minimal, fast, done। Screen B: disconnected team: SqlDataAdapter एक trip में एक DataSet fill करता है, connection बंद हो जाता है, owner एक bound grid में offline काम करता है, और da.Update(ds) सुविधा होने पर edited remarks post करता है। Choosing rule: quick single pass = reader; browse, edit या offline काम = adapter + DataSet।
Watch out
Model Mix-Ups जो Marks खा जाते हैं
DataReader बनाम DataSet: वह pair जिसे exams swap करना पसंद करते हैं। Reader = connected stream; DataSet = offline copy। कभी मत लिखिए कि एक DataSet forward-only है।
DataAdapter एक Container की तरह: यह कुछ hold नहीं करता; यह data MOVE करता है (Fill in, Update out)।
एक Command, एक Statement: इसका CommandText एक single SQL sentence है; 3 अलग queries का मतलब है 3 commands (या calls के बीच CommandText rewrite करना)।
Theory
Model Unit 3 का Missing Half है
Register-and-glass lesson याद कीजिए: हमने promise किया था DataSet एक दिन बिना grid को notice हुए एक असली database से fill होगा। DataAdapter उस promise का delivery mechanism है, और अगला lesson इसे code में execute करता है: open, query, read, insert, fill, bind: पूरा ShopKeeper save-and-reload cycle, Command objects के अंदर सवार BCA205 के SQL के साथ।
Summary
Key takeaways
- पाँच objects, हर एक का एक job: Connection (line), Command (SQL), DataReader (connected stream), DataAdapter (courier), DataSet (offline copy)।
- Connected style: Connection + Command + DataReader: fast, live, forward-only, read-only।
- Disconnected style: DataAdapter एक DataSet fill करता है, connection बंद होता है, offline काम, Update वापस sync करता है।
- Command के 3 executes: ExecuteReader (rows), ExecuteNonQuery (affected count), ExecuteScalar (single value)।
- Providers crew को rename करते हैं: SQL Server के लिए Sql, Access के लिए OleDb; DataSet provider-neutral रहता है।
- Quick pass = reader; browse/edit/offline = adapter + DataSet।
- Memory hook: line, sentence, listener, courier, register।