És az osztály kapcsolatot

A .NET-keretrendszer magában foglalja a saját adatok hozzáférési technológia - ADO.NET. Ez a technológia áll sikerült osztályok, amelyek lehetővé teszik a .NET alkalmazások kapcsolódni egy adatforrás (általában egy relációs adatbázis), futtatni parancsokat és kezelheti offline adatokat. ADO.NET egy kis csoda, hogy ez a technológia lehetővé teszi, hogy írjon többé-kevésbé ugyanazt a kódot adatokhoz való hozzáférés - mind a webes alkalmazások és kliens-szerver asztali alkalmazásokat, sőt egyfelhasználós alkalmazások kapcsolódni a helyi adatbázis .

Ismerje meg az összes alapjait ADO.NET keretében a kliens alkalmazás, láthatjuk az ADO.NET. Nem írom le itt, hogy milyen adatokat szolgáltató és mit jelent építészet ADO.NET, akkor van egy általános képet az osztályok kapcsolódó szinten - Connection, Command, DataReader, DataAdapter és autonóm szintű osztályok DataSet, DataTable, DataRow stb . Ezután én úgy ADO.NET építészet ASP.NET webalkalmazás összefüggésben. Ennek adatszolgáltató használom System.Data.SqlClient (SQL Server).

Connection osztály lehetővé teszi a kapcsolatot egy adatforrást, amely kölcsönhatásba. Mielőtt mást csinálni (beleértve a kitermelés, törölni, beszúrni vagy frissíteni az adatokat), akkor meg kell kapcsolatot létesíteni. Kulcsfontosságú tulajdonságok és módszerek meghatározott Csatlakozó felület IDbConnection. amely végrehajtja az összes kapcsolat osztályok.

csatlakozások

Amikor létrehoz egy Connection objektum lesz szükség, hogy a connection string. A kapcsolat string egy sorozata pár „név-érték”, pontosvesszővel elválasztva (;). Az, hogy ezeket a beállításokat, mivel az ügy nem fontos. Együtt kell tüntetni a szükséges alapadatokat kapcsolatot létesíteni.

Bár a vegyületek sorok függ a relációs adatbázis, amelynek révén az adatszolgáltató több információt szinte mindig szükséges; Ezeket a fragmentumokat az alábbiakban ismertetjük:

A szerver, amelyen az adatbázis található. Az alábbi példákban az adatbázis szerver mindig található ugyanazon a számítógépen, mint az ASP.NET alkalmazás, így álnéven vagy localhost, vagy a pontos neve a szerver (esetemben „\ SQLEXPRESS”) helyett a számítógép nevét.

Az adatbázis kell használni. Fogom használni a teszt adatbázist Northwind, amely alapértelmezés szerint telepítve van a legtöbb kiadásban az SQL Server.

Az adatbázis hitelesíti. Oracle adatbázis és az SQL Server szállító biztosítja a választás -, hogy használja néhány hitelesítő adatok vagy csatlakoztassa a jelenlegi rendszer felhasználói. Az utóbbi lehetőség általában előnyösebb, mivel ebben az esetben nem kell tenni a jelszót a kódot, vagy a konfigurációs fájlokat.

Például az alábbiakban egy connection string kapcsolódni a Northwind a jelenlegi számítógépen egy integrált biztonsági adatbázis (azaz a hozzáférést a nevét, a jelenlegi Windows felhasználói adatbázis):

Ha a szolgáltató OLE DB, a kapcsolat string hasonló lesz az előzőhöz, de adjunk hozzá egy további konfigurációs paraméter a járművezető azonosítására OLE DB (Provider = MSDAORA), és csatlakozni az Access adatbázis fájl kell adnia a «Provider = Microsoft.Jet.OLEDB. 4.0. "

Ha olyan adatbázist használsz eltérő SQL Server, szükséges lehet, hogy konzultáljon az adatszolgáltató dokumentáció (vagy hivatkozás .NET Framework osztálykönyvtárat), hogy megtudja, a támogatott értékek a connection string. Például a legtöbb adatbázisok támogatják a konfiguráció kapcsolat időtúllépés, állítsa a várakozási idő kapcsolat másodpercet, mielőtt meg lehet kivétel. (Az SQL Server alapértelmezés szerint 15 másodperc.)

Amikor létrehoz egy kapcsolat objektum lehet átadva paraméterként a kivitelező kapcsolat húr. Egy másik lehetőség, hogy kézzel állítsa be a tulajdonságait ConnectionString értéket. Ha ez történik, mielőtt a kapcsolat megnyitásához.

Nincs ok arra, hogy kemény kódot a connection string. A web.config fájl egy részén - a legalkalmasabb hely, hogy mentse a connection string. Az alábbiakban egy példát:

Ezután a kapcsolat string könnyen kivonat a nevét WebConfigurationManager.ConnectionStrings gyűjtemény. Feltéve, hogy az importált tér System.Web.Configuration nevek, erre akkor a következő nyilatkozatot teszi:

A következő példákban feltételezzük, hogy ez a vonal egy hozzáadott vegyület Web.config fájlt.

kapcsolat teszt

Kiválasztása után a connection stringet kezelni a kapcsolat nagyon egyszerű - csak meg kell használni az Open () módszer és a Bezárás (). Sőt, a IDbConnection felület örökli a IDisposable felület, amely meghatározza egy osztály, amely megvalósítja azt, mint erőforrás. Ezért, amikor a Class A kapcsolat lehet felhordani szerkezetet anélkül, hogy a módszer bezárása () - miután a fordító elérte a végén ezt a konstrukció, a kapcsolat bezáródik magát.

Az alábbi kódot a eseménykezelő Page.Load lehet használni, hogy ellenőrizze a kapcsolat állapotát és megjeleníti azt a szöveg a címkén. A kódot dolgozni, akkor kell importálni System.Data.SqlClient névtér:

És az osztály kapcsolatot

Amikor megnyit egy kapcsolatot lehet két kivétel. InvalidOperationException keletkezik, ha a kapcsolat string információ hiányzik, vagy a kapcsolat már nyitva van. SQLException keletkezik az esetben, ha bármilyen más problémák, beleértve a hiba csatlakozik az adatbázis szerver, a regisztráció vagy a hozzáférés egy adott adatbázis. a kezelő a használt tárgy akkor is, ha a kimenetet a termelő egység eredményeként kezelt kivétel.

Kapcsolatkészletezés Szervezet

Vegyületek előállítása megköveteli egy kicsi, de észrevehető időt. Egy webes alkalmazás, amely hatékonyan feldolgozott kérelmek megnyitott kapcsolatokat, és határozatlan ideig zárva tart - mint a feldolgozás új kérelmeket. Ebben a környezetben, egy kis overhead a telepítés a kapcsolat azonban számottevő, és a limit skálázhatóság.

Az egyik megoldás az lehetne szervezni a medence kapcsolatokat. Kapcsolatmegőrzés - a gyakorlat tárolása állandó sor nyílt kapcsolat az adatbázis közös ülések között, amelyek ugyanazt adatforrást. Ezzel elkerülhető, hogy az állandó teremtés és pusztítás ízületek. Kapcsolattárolás az ADO.NET teljesen átlátható a programozó, és az adatok hozzáférési kódot nem igényel semmilyen változás. Amikor egy ügyfél kapcsolat, amelyben az Open () vegyületet, melyet közvetlenül a rendelkezésre álló medence, anélkül, hogy újra létrehozása. Amikor az ügyfél kiadja a kapcsolatot hívja Bezárás () vagy megsemmisíteni () (IDisposable), akkor nem rögzült, és visszatért a medencébe, hogy a szolgáltatás a következő kérést.

ADO.NET nem tartalmaz olyan mechanizmust rendezésére a kapcsolat medence. Azonban a legtöbb ADO.NET adatszolgáltatók végre valamilyen formában egy ilyen medence. Adatszolgáltatóknak SQL Server és az Oracle-hez saját hatékony algoritmusok szervezésével kapcsolatban medencék. Ezek az algoritmusok hajtják végre teljes egészében a menedzselt kód, és a közhiedelemmel ellentétben, nem használja a szolgáltatást gazdálkodó COM +. Ahhoz vegyületet újra az SQL Server vagy Oracle, a kapcsolat húrok meg kell egyeznie. Ha eltérnek egy kicsit, hozzon létre egy új kapcsolatot az új medencében.

Kapcsolattárolás SQL Server és az Oracle használja a teljes szöveges összehasonlítás motort. Ez azt jelenti, hogy bármilyen minimális változás a kapcsolat húr sérti a medence, akkor is, ha ez csak sorrendjét megváltoztatjuk a beállítások vagy adjunk hozzá egy extra helyet a végén. Emiatt fontos, hogy ne kódolni merev kapcsolat húrok különböző weboldalakat. Ehelyett meg kell fenntartani a connection string egy helyen - lehetőleg alatt web.config fájlt.

Mindkét adatszolgáltatók - SQL Server és az Oracle - kapcsolat medencék tartoznak, és használja automatikusan. Azonban akkor is használhatja a kapcsolat string paraméterek beállításához a medence méretét. Ezek a paraméterek leírása az alábbi táblázatban:

Paraméterek a kapcsolat medence

A maximális kapcsolatok számát a medencében (gyári 100). Ha a legnagyobb medence méret elérésekor minden további kísérlet, hogy egy kapcsolatot sorban álló függő kivételek vegyület. (Ha Connection.Timeout időtartama lejár, mielőtt a kapcsolat elérhető, hiba lép fel.)

A minimális kapcsolatok számát kell maradnia a medencében (az alapértelmezett 0). Ez a kapcsolatok számát jön létre, amikor először nyitja meg a kapcsolat, ami csökkenti a várakozási időt az első hívás

Amikor a valódi érték (alapértelmezett) a származtatott vegyületet a megfelelő medencében, vagy ha szükséges, jön létre, és hozzáadjuk a megfelelő medence

Ez adja meg az időtartamot másodpercben. Ha a kapcsolat vissza a medencébe és a csatlakozási idő meghaladja a meghatározott élettartam, akkor meg kell semmisíteni. Az alapértelmezett érték 0, ami letiltja ezt a viselkedést. Ez az eszköz akkor hasznos, ha szeretné, hogy újra nagyszámú kapcsolat egy időben

Az alábbiakban egy példa a csatlakozó vezeték, amely meghatározza a minimális méretét a medence:

Egyes gyártók közé tisztítási módszerek a kapcsolat medence. Például, SqlConnection hatására statikus módszerek ClearPool () és ClearAllPools (). Amikor ClearPool () hívást biztosít SqlConnection objektumot, és az összes megfelelő vegyületeket eltávolítjuk. ClearAllPools () törli az összes kapcsolatot medencék a jelenlegi alkalmazási területen. Formálisan, ezek a módszerek nem zárja le a kapcsolatot, csak jelölni azokat érvénytelennek úgy, hogy a végén az időtúllépés, akkor során zárva kell vegyületek tisztítására, néhány perccel később.

Ezt a funkciót csak ritkán használják; Általában csak abban az esetben, ha van értelme - ha tudjuk, hogy a medence megtelt, vagy a kapcsolat érvénytelenné vált (például újraindítja az SQL Server), és el kell kerülni a hibákat.

Kapcsolatkészletezés SQL Server és az Oracle mindig is része a globális alkalmazási területen erőforrásokat. A kapott medencék vegyületek nem lehet újra felhasználni a különböző webes alkalmazások ugyanazon webkiszolgáló vagy a web alkalmazások és más .NET alkalmazások. Ugyanebből az okból, minden kapcsolat megszakadt, amikor a kérelem tartomány újraindul. (Application domének újraindul, különböző okok miatt, beleértve a változó weboldalakat építeni, és konfigurációját webes alkalmazások Fájl alkalmazási területeken, és újraindul elérésével bizonyos küszöbértékeket ;. Például az IIS újraindíthatja a alkalmazási terület, amely sok memóriát, vagy túl sok kérés a sorban. Mindkét állapot utalhat romlás az alkalmazási területen.)

Kapcsolódó cikkek