Rámec přístupu k datům Microsoft ADO.Net se používá již více než dvě desetiletí. Můžete využít ADO.Net k provádění operací CRUD na široké škále databází ze spravovaného prostředí .Net CLR.
Poskytovatel dat je softwarová součást, která zapouzdřuje protokoly používané k připojení a interakci s podkladovou databází ze spravovaného prostředí. Mezi oblíbené poskytovatele dat patří: SQL Server Data Provider, Oracle Data Provider a OLEDB Data Provider. ADO.Net může pracovat v připojeném i odpojeném režimu.
Připojený režim provozu v ADO.Net je takový, ve kterém je připojení k podkladové databázi živé po celou dobu životnosti operace. Mezitím je odpojený provozní režim, ve kterém ADO.Net načte data z podkladové databáze, dočasně uloží data načtená do paměti a poté zavře připojení k databázi.
Při práci s ADO.Net v odpojeném provozním režimu byste obvykle využívali DataAdapter, DataSet, DataTable a DataTableReader. Zatímco DataAdapter funguje jako most mezi aplikací a databází, DataSet je odpojená reprezentace databáze v paměti a může obsahovat jednu nebo více instancí DataTable. DataTableReader je podobný DataReaderu kromě toho, že funguje v odpojeném režimu.
Pojďme se ponořit do nějakého kódu
Pojmů už máme dost - pojďme do nějakého kódu. Následující fragment kódu ukazuje, jak můžete načíst data z databáze v odpojeném režimu. Tento příklad se připojuje k databázi AdventureWorks pouze pro ilustraci.
static void Main (řetězec [] args)
{
string connectionString = ConfigurationManager.ConnectionStrings ["AdventureWorksDB"]. ConnectionString;
Snaž se
{
pomocí (SqlConnection sqlConnection = nový SqlConnection (connectionString))
{
sqlConnection.Open ();
SqlDataAdapter sqlDataAdapter = nový SqlDataAdapter ("SELECT * FROM [AdventureWorks2014]. [HumanResources]. [Department]", sqlConnection);
DataSet dataSet = nový DataSet ();
sqlDataAdapter.Fill (dataSet);
}
}
úlovek (výjimka mimo)
{
// Sem napište kód pro zpracování výjimky
}
}
Ve výše uvedeném výpisu kódu je navázáno připojení k databázi pomocí instance třídy SqlConnection. Potom se vytvoří instance DataAdapter a použije se k naplnění instance DataSet pomocí metody Fill () třídy DataAdapter. Připojení k databázi se automaticky uzavře, když ovládací prvek vyjde z bloku „using“, protože metoda Dispose () je vyvolána v instanci SqlConnection automaticky. Data uložená v instanci DataSet jsou umístěna v paměti a nejsou závislá na aktivním připojení k databázi, protože DataSet pracuje v odpojeném režimu. Jakmile se data načtou z databáze a uloží se do paměti v instanci DataSet, můžete data také změnit, pokud chcete, a poté podle potřeby data znovu uchovat.
DataRow dataRow = dataSet.Tables [0] .NewRow (); // Vytvoří nový datový řádek
//Teď můžeš
specifikovat hodnoty pro každý ze sloupců datového řádku
dataSet.Tables [0] .Rows.Add (dataRow); // Přidejte datový řádek
sqlDataAdapter.Update (dataSet); // Vloží nový záznam
Všimněte si, že blok "using" můžete použít na typech, které implementují rozhraní IDisposable. Celý blok „using“ je zabalen do bloku try - catch, aby byly zpracovány výjimky, které mohou nastat při provádění programu. Všimněte si, že připojovací řetězec v tomto příkladu je načten z konfiguračního souboru - je dobrým zvykem izolovat připojovací řetězec z kódu vaší aplikace. V případě potřeby můžete také zašifrovat připojovací řetězec.
DataTable můžete také naplnit stejným způsobem, jakým naplníte DataSet. Zde je příklad, který to ilustruje.
string connectionString = ConfigurationManager.ConnectionStrings ["AdventureWorksDB"]. ConnectionString;
Snaž se
{
pomocí (SqlConnection sqlConnection = nový SqlConnection (connectionString))
{
sqlConnection.Open ();
SqlDataAdapter sqlDataAdapter = nový SqlDataAdapter ("SELECT * FROM [AdventureWorks2014]. [HumanResources]. [Department]", sqlConnection);
DataTable dataTable = nový DataTable ();
sqlDataAdapter.Fill (dataTable);
}
}
úlovek (výjimka mimo)
{
// Sem napište kód pro zpracování výjimky
}
DataTableReader kombinuje to nejlepší z obou světů, tj. Je jako DataReader, který pracuje v odpojeném režimu a je rychlejší než DataTable i DataReader. Chcete-li vytvořit DataTableReader, vše, co musíte udělat, je vyvolat metodu CreateDataReader () na instanci DataTable.
DataTableReader dataTableReader = dataTable.CreateDataReader ();
Následující výpis kódu ukazuje, jak můžete zobrazit názvy všech oddělení pomocí DataTableReader.
static void Main (řetězec [] args)
{
string connectionString = ConfigurationManager.ConnectionStrings ["AdventureWorksDB"]. ConnectionString;
Snaž se
{
pomocí (SqlConnection sqlConnection = nový SqlConnection (connectionString))
{
sqlConnection.Open ();
SqlDataAdapter sqlDataAdapter = nový SqlDataAdapter ("SELECT * FROM [AdventureWorks2014]. [HumanResources]. [Department]", sqlConnection);
DataTable dataTable = nový DataTable ();
sqlDataAdapter.Fill (dataTable);
DataTableReader dataTableReader = dataTable.CreateDataReader ();
while (dataTableReader.Read ())
{
Console.WriteLine (dataTableReader ["Název"]. ToString ());
}
}
}
úlovek (výjimka mimo)
{
// Sem napište kód pro zpracování výjimky
}
Console.Read ();
}