SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
Pokročilé techniky
programováníADO.NET
ADO.NET
Technologie ADO.NET (ActiveX Data Objects) nahrazuje technologii ADO určenou
pro programování v nativním kódu pomocí komponent COM.
Microsoft dodává ADO.NET s nativní podporou pro servery SQL a Oracle, dále
potom pro databáze, které implementují rozhraní OLE DB nebo ODBC. Existují však
nativní podpory i pro další databázové servery od jiných poskytovatelů, jako např.
MySQL, Oracle aj.
Součástí ADO.NET je mnoho sdílených tříd, které se používají všemi druhy databází.
V prostoru jmen System.Data jsou deklarovány např. třídy DataSet,
DataTable, DataRelation. Další sdílené třídy jsou deklarovány v prostoru
jmen System.Data.Common, jako např. DataColumnMapping,
DataTableMapping.
Třídy specifické pro různé DB
Kromě sdílených tříd obsahuje ADO.NET třídy specifické pro různé databáze. Např. pro
připojení k databázi obsahuje třídy:
- SqlConnection – pro SQL server v prostoru jmen System.Data.SqlClient,
- SqlCeConnection – pro server SQL Compact Edition (dále jen SQL CE) v prostoru
jmen System.Data.SqlServerCe,
- OracleConnection – pro server Oracle v prostoru jmen System.Data.OracleClient,
- OleDbConnection – pro servery implementující rozhraní OLE DB v prostoru jmen
System.Data.OleDb
- OdbcConnection – pro servery implementující rozhraní ODBC v prostoru jmen
System.Data.Odbc.
Třídy specifické pro různé DB
Uvedené třídy mají od verze ADO.NET 2.0 společného předka abstraktní třídu
DbConnection, která implementuje rozhraní IDbConnection. V nižších
verzích .NET uvedené třídy neměly společného předka, ale jen společné rozhraní.
Tento princip je použit i pro další specifické třídy. Specifické třídy mají předponu
odpovídající druhu databáze. Mají společného předka abstraktní třídu, která má
předponu Db a ta implementuje rozhraní, které má předponu IDb.
Databázové připojení
Pro přístup k databázi se musí poskytnout parametry připojení, jako např. název
počítače, na kterém je databázový server spuštěn, přihlašovací údaje apod. Při
připojení k databázi se používají třídy typu DbConnection, které pracují s
připojovacím řetězcem, jenž se zpravidla inicializuje konstruktorem.
Připojovací řetězec obsahuje vlastnosti a jejich hodnoty oddělené středníkem.
Např. pro databázi Oracle na počítači s adresou IP 10.65.24.2:
string connectionString =
"Data source = 10.65.24.2/orcl.65.24.2; User ID = system;
Password = heslo";
Databázové připojení
Pro SQL Server na stejném počítači, na kterém je spuštěn klient s integrovaným
ověřováním totožnosti uživatele pomocí uživatelských účtů systému Windows:
string connectionString =
"server = (local); integrated security=SSPI;database=Northwind";
Pro databázi SQL Express s připojením k databázovému souboru (s příponou .mdf) s
integrovaným ověřováním totožnosti uživatele pomocí uživatelských účtů systému
Windows:
string connectionString = @"Data Source=.SQLEXPRESS;
AttachDbFilename=d:AdventureWorksLT_Data.mdf;
Integrated Security=True;Connect Timeout=30;User Instance=True";
Databázové připojení
Konstruktor třídy typu DbConnection neotevře spojení. K tomu se používá
metoda Open:
void Open()
Zavření spojení provede metoda Close:
void Close()
Spojení je možné otevírat a zavírat několikrát.
Třída implementuje rozhraní IDisposable. Pokud se spojení nezavře metodou
Close, zavře jej metoda Dispose.
Databázové připojení – příklad
Příklad demonstruje otevření připojení na vzorovou databázi SQL CE.
Pro vytvoření připojovacího řetězce lze též použít třídy typu DbConnectionStringBuilder, např.
SqlConnectionStringBuilder:
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = "(local)";
builder.IntegratedSecurity = true;
builder.InitialCatalog = "d:Northwind";
SqlConnection con = new SqlConnection(builder.ConnectionString);
https://goo.gl/WeY3cQ
Továrna poskytovatele dat
Od .NET 2.0 je k dispozici třída továrny poskytovatele dat DbProviderFactory, která
obsahuje metody pro vytvoření tříd pro práci s daty na abstraktní úrovni bez znalosti
konkrétního typu databáze. Jedná se například o následující virtuální metody:
DbCommand CreateCommand()
DbConnection CreateConnection()
DbDataAdapter CreateDataAdapter()
DbParameter CreateParameter()
Továrna poskytovatele dat
Vytvoření této třídy zajišťuje třída DbProviderFactories a její statická
metoda GetFactory:
DbProviderFactory GetFactory(string
providerInvariantName)
Pro vytvoření továrny poskytovatele dat je potřebné jméno poskytovatele. K tomu
lze využít definici připojovacího řetězce v konfiguračním souboru aplikačního
nastavení, a to sekci <connectionStrings>.
Továrna poskytovatele dat
V prostředí Visual Studio 2010 lze vytvořit připojovací řetězec pomocí menu Project
| Properties | Settings – výběr typu (Connection string) a buď přímo zapsat řetězec,
nebo zvolit tlačítko s třemi tečkami a zadat připojení k databázi pomocí dialogového
okna.
Konfigurační soubor app.exe.config pro databázi SQL CE může mít např. následující
obsah:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections></configSections>
<connectionStrings>
<add name="Connection02.Properties.Settings.Northwind"
connectionString="Data Source=D:Northwind.sdf"
providerName="Microsoft.SqlServerCe.Client.3.5" />
</connectionStrings>
</configuration>
Příkazy
Pro vykonání příkazů jazyka SQL slouží třída typu DbCommand. Třída SqlCeCommand
obsahuje 4 konstruktory umožňující nastavit text SQL příkazu, databázové připojení a
případně i transakci.
SqlCeCommand()
SqlCeCommand(string commandText)
SqlCeCommand(string commandText, SqlCeConnection connection)
SqlCeCommand(string commandText, SqlCeConnection connection,
SqlCeTransaction transaction)
Příkazy
Třída typu DbCommand dále obsahuje vlastnost CommandType, která poskytuje
nebo nastavuje typ příkazu výčtového typu obsahujícího následující výčtové
konstanty:
- Text – text SQL příkazu – implicitní hodnota,
- StoredProcedure – jméno uložené procedury,
- TableDirect – jméno tabulky. Lze použít jen pro rozhraní OLE DB.
Třída typu DbCommand implementuje rozhraní IDisposable. Při volání metody
Dispose dojde pouze k likvidaci instance třídy DbCommand nikoliv také k zavření
databázového připojení.
Příkaz pro modifikaci databáze
Příkaz, kterým se modifikuje databáze, lze spustit voláním následující metody třídy
typu DbCommand:
int ExecuteNonQuery()
Používá se pro SQL příkazy UPDATE, INSERT a DELETE nebo tvorbu databáze. Pro
příkazy UPDATE, INSERT a DELETE vrací počet ovlivněných řádků. Pro ostatní příkazy
vrací -1.
https://goo.gl/D9PAOq

Mais conteúdo relacionado

Destaque

Work Safely at Heights
Work Safely at HeightsWork Safely at Heights
Work Safely at HeightsSean O'Neill
 
CV DR.SWADESH SHARMA ,updated new
CV DR.SWADESH SHARMA ,updated newCV DR.SWADESH SHARMA ,updated new
CV DR.SWADESH SHARMA ,updated newDr.Swadesh Sharma
 
Food &amp; Still Life
Food &amp; Still LifeFood &amp; Still Life
Food &amp; Still LifesandyFoto
 
Cambio Climático, turismo cultural y el patrimonio vulnerable. Las acciones ...
Cambio Climático,  turismo cultural y el patrimonio vulnerable. Las acciones ...Cambio Climático,  turismo cultural y el patrimonio vulnerable. Las acciones ...
Cambio Climático, turismo cultural y el patrimonio vulnerable. Las acciones ...Hilda Puccio
 
The effects of social media on athlete endorsement Case study by Neal Rawlinson
The effects of social media on athlete endorsement Case study by Neal RawlinsonThe effects of social media on athlete endorsement Case study by Neal Rawlinson
The effects of social media on athlete endorsement Case study by Neal RawlinsonNeal Rawlinson
 
Aula 14 pai alcoolatra
Aula 14   pai alcoolatraAula 14   pai alcoolatra
Aula 14 pai alcoolatraFatoze
 
Международная практика оценки социального воздействия культурных инициатив
Международная практика оценки социального воздействия культурных инициатив Международная практика оценки социального воздействия культурных инициатив
Международная практика оценки социального воздействия культурных инициатив Эволюция и Филантропия
 
Understanding the state of your web application using Apache Kafka, Spark
Understanding the state of your web application using Apache Kafka, SparkUnderstanding the state of your web application using Apache Kafka, Spark
Understanding the state of your web application using Apache Kafka, SparkExist
 
رواد الجودة
رواد الجودةرواد الجودة
رواد الجودةzeezeegh
 

Destaque (12)

Work Safely at Heights
Work Safely at HeightsWork Safely at Heights
Work Safely at Heights
 
Saharova A. & Kurkina A.
Saharova A. & Kurkina A.Saharova A. & Kurkina A.
Saharova A. & Kurkina A.
 
CV DR.SWADESH SHARMA ,updated new
CV DR.SWADESH SHARMA ,updated newCV DR.SWADESH SHARMA ,updated new
CV DR.SWADESH SHARMA ,updated new
 
Food &amp; Still Life
Food &amp; Still LifeFood &amp; Still Life
Food &amp; Still Life
 
my cv
my cvmy cv
my cv
 
Cambio Climático, turismo cultural y el patrimonio vulnerable. Las acciones ...
Cambio Climático,  turismo cultural y el patrimonio vulnerable. Las acciones ...Cambio Climático,  turismo cultural y el patrimonio vulnerable. Las acciones ...
Cambio Climático, turismo cultural y el patrimonio vulnerable. Las acciones ...
 
Семь чудес краудфандинга
Семь чудес краудфандингаСемь чудес краудфандинга
Семь чудес краудфандинга
 
The effects of social media on athlete endorsement Case study by Neal Rawlinson
The effects of social media on athlete endorsement Case study by Neal RawlinsonThe effects of social media on athlete endorsement Case study by Neal Rawlinson
The effects of social media on athlete endorsement Case study by Neal Rawlinson
 
Aula 14 pai alcoolatra
Aula 14   pai alcoolatraAula 14   pai alcoolatra
Aula 14 pai alcoolatra
 
Международная практика оценки социального воздействия культурных инициатив
Международная практика оценки социального воздействия культурных инициатив Международная практика оценки социального воздействия культурных инициатив
Международная практика оценки социального воздействия культурных инициатив
 
Understanding the state of your web application using Apache Kafka, Spark
Understanding the state of your web application using Apache Kafka, SparkUnderstanding the state of your web application using Apache Kafka, Spark
Understanding the state of your web application using Apache Kafka, Spark
 
رواد الجودة
رواد الجودةرواد الجودة
رواد الجودة
 

Semelhante a ADO.NET

MoroSystems na ostravském CZJUGu o Apache Wicket
MoroSystems na ostravském CZJUGu o Apache WicketMoroSystems na ostravském CZJUGu o Apache Wicket
MoroSystems na ostravském CZJUGu o Apache WicketTomáš Páral
 
.NET v SQL Serveru
.NET v SQL Serveru.NET v SQL Serveru
.NET v SQL ServeruJan Drozen
 
ASP.NET MVC 3 and SQL Server interoperability overview [CZ]
ASP.NET MVC 3 and SQL Server interoperability overview [CZ]ASP.NET MVC 3 and SQL Server interoperability overview [CZ]
ASP.NET MVC 3 and SQL Server interoperability overview [CZ]Vítězslav Šimon
 
Revoluce v cloudu: první autonomně řízená databáze na světě
Revoluce v cloudu: první autonomně řízená databáze na světěRevoluce v cloudu: první autonomně řízená databáze na světě
Revoluce v cloudu: první autonomně řízená databáze na světěMarketingArrowECS_CZ
 
2007 Technologie Pro Tvorbu Java Enterprise Aplikací
2007 Technologie Pro Tvorbu Java Enterprise Aplikací2007 Technologie Pro Tvorbu Java Enterprise Aplikací
2007 Technologie Pro Tvorbu Java Enterprise AplikacíMartin Ptáček
 
České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!Martin Humpolec
 
Jira Migrace ze Server na DataCenter
Jira Migrace ze Server na DataCenterJira Migrace ze Server na DataCenter
Jira Migrace ze Server na DataCenterOnlio
 
2010 JBoss Application Server
2010 JBoss Application Server2010 JBoss Application Server
2010 JBoss Application ServerMartin Ptáček
 
Vývoj addonů pro Jira Data Center
Vývoj addonů pro Jira Data CenterVývoj addonů pro Jira Data Center
Vývoj addonů pro Jira Data CenterOnlio
 
Rozšiřitelnost ASP.NET MVC
Rozšiřitelnost ASP.NET MVCRozšiřitelnost ASP.NET MVC
Rozšiřitelnost ASP.NET MVCtopascz
 
EZproxy a Shibboleth - Seminar v NTK 20.10.10
EZproxy a Shibboleth - Seminar v NTK 20.10.10EZproxy a Shibboleth - Seminar v NTK 20.10.10
EZproxy a Shibboleth - Seminar v NTK 20.10.10Petr
 
Migrace do Data Centra
Migrace do Data CentraMigrace do Data Centra
Migrace do Data CentraOnlio
 
Confluence Migrace DataCenter
Confluence Migrace DataCenterConfluence Migrace DataCenter
Confluence Migrace DataCenterOnlio
 

Semelhante a ADO.NET (20)

MoroSystems na ostravském CZJUGu o Apache Wicket
MoroSystems na ostravském CZJUGu o Apache WicketMoroSystems na ostravském CZJUGu o Apache Wicket
MoroSystems na ostravském CZJUGu o Apache Wicket
 
ASP.NET 3.5 / futures
ASP.NET 3.5 / futuresASP.NET 3.5 / futures
ASP.NET 3.5 / futures
 
.NET v SQL Serveru
.NET v SQL Serveru.NET v SQL Serveru
.NET v SQL Serveru
 
ASP.NET MVC 3 and SQL Server interoperability overview [CZ]
ASP.NET MVC 3 and SQL Server interoperability overview [CZ]ASP.NET MVC 3 and SQL Server interoperability overview [CZ]
ASP.NET MVC 3 and SQL Server interoperability overview [CZ]
 
R85 Designer Tcl
R85 Designer TclR85 Designer Tcl
R85 Designer Tcl
 
R85 Designer
R85 DesignerR85 Designer
R85 Designer
 
TNPW2-2011-06
TNPW2-2011-06TNPW2-2011-06
TNPW2-2011-06
 
Revoluce v cloudu: první autonomně řízená databáze na světě
Revoluce v cloudu: první autonomně řízená databáze na světěRevoluce v cloudu: první autonomně řízená databáze na světě
Revoluce v cloudu: první autonomně řízená databáze na světě
 
2007 Technologie Pro Tvorbu Java Enterprise Aplikací
2007 Technologie Pro Tvorbu Java Enterprise Aplikací2007 Technologie Pro Tvorbu Java Enterprise Aplikací
2007 Technologie Pro Tvorbu Java Enterprise Aplikací
 
České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!
 
Jira Migrace ze Server na DataCenter
Jira Migrace ze Server na DataCenterJira Migrace ze Server na DataCenter
Jira Migrace ze Server na DataCenter
 
2010 JBoss Application Server
2010 JBoss Application Server2010 JBoss Application Server
2010 JBoss Application Server
 
Vývoj addonů pro Jira Data Center
Vývoj addonů pro Jira Data CenterVývoj addonů pro Jira Data Center
Vývoj addonů pro Jira Data Center
 
Lotus Notes 7
Lotus Notes 7Lotus Notes 7
Lotus Notes 7
 
Rozšiřitelnost ASP.NET MVC
Rozšiřitelnost ASP.NET MVCRozšiřitelnost ASP.NET MVC
Rozšiřitelnost ASP.NET MVC
 
EZproxy a Shibboleth - Seminar v NTK 20.10.10
EZproxy a Shibboleth - Seminar v NTK 20.10.10EZproxy a Shibboleth - Seminar v NTK 20.10.10
EZproxy a Shibboleth - Seminar v NTK 20.10.10
 
Migrace do Data Centra
Migrace do Data CentraMigrace do Data Centra
Migrace do Data Centra
 
Database Cloud Backup DEMO
Database Cloud Backup DEMODatabase Cloud Backup DEMO
Database Cloud Backup DEMO
 
Confluence Migrace DataCenter
Confluence Migrace DataCenterConfluence Migrace DataCenter
Confluence Migrace DataCenter
 
Django
DjangoDjango
Django
 

Mais de Jan Hřídel

INPTP přednáška 03 2016
INPTP přednáška 03 2016INPTP přednáška 03 2016
INPTP přednáška 03 2016Jan Hřídel
 
INPTP přednáška 01b 2016
INPTP přednáška 01b 2016INPTP přednáška 01b 2016
INPTP přednáška 01b 2016Jan Hřídel
 
INPTP přednáška 01a 2016
INPTP přednáška 01a 2016INPTP přednáška 01a 2016
INPTP přednáška 01a 2016Jan Hřídel
 
KST/ICSHP - 5. a 6. přednáška
KST/ICSHP - 5. a 6. přednáškaKST/ICSHP - 5. a 6. přednáška
KST/ICSHP - 5. a 6. přednáškaJan Hřídel
 
KST/ICSHP - 3. a 4. přednáška
KST/ICSHP - 3. a 4. přednáškaKST/ICSHP - 3. a 4. přednáška
KST/ICSHP - 3. a 4. přednáškaJan Hřídel
 
KST/ICSHP - 2. přednáška
KST/ICSHP - 2. přednáškaKST/ICSHP - 2. přednáška
KST/ICSHP - 2. přednáškaJan Hřídel
 
KST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaKST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaJan Hřídel
 
Startup investor pitch
Startup investor pitchStartup investor pitch
Startup investor pitchJan Hřídel
 
Pokročilé techniky programování .NET a C#
Pokročilé techniky programování .NET a C#Pokročilé techniky programování .NET a C#
Pokročilé techniky programování .NET a C#Jan Hřídel
 

Mais de Jan Hřídel (12)

INPTP wpf
INPTP   wpfINPTP   wpf
INPTP wpf
 
INPTP přednáška 03 2016
INPTP přednáška 03 2016INPTP přednáška 03 2016
INPTP přednáška 03 2016
 
INPTP přednáška 01b 2016
INPTP přednáška 01b 2016INPTP přednáška 01b 2016
INPTP přednáška 01b 2016
 
INPTP přednáška 01a 2016
INPTP přednáška 01a 2016INPTP přednáška 01a 2016
INPTP přednáška 01a 2016
 
KST/ICSHP - 5. a 6. přednáška
KST/ICSHP - 5. a 6. přednáškaKST/ICSHP - 5. a 6. přednáška
KST/ICSHP - 5. a 6. přednáška
 
KST/ICSHP - 3. a 4. přednáška
KST/ICSHP - 3. a 4. přednáškaKST/ICSHP - 3. a 4. přednáška
KST/ICSHP - 3. a 4. přednáška
 
KST/ICSHP - 2. přednáška
KST/ICSHP - 2. přednáškaKST/ICSHP - 2. přednáška
KST/ICSHP - 2. přednáška
 
KST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaKST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáška
 
Startup investor pitch
Startup investor pitchStartup investor pitch
Startup investor pitch
 
Nástěnka 01
Nástěnka 01Nástěnka 01
Nástěnka 01
 
Nástěnka 02
Nástěnka 02Nástěnka 02
Nástěnka 02
 
Pokročilé techniky programování .NET a C#
Pokročilé techniky programování .NET a C#Pokročilé techniky programování .NET a C#
Pokročilé techniky programování .NET a C#
 

Último

Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?
Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?
Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?Taste
 
ZWT - co byste měli vědět - studijní program KIZI VŠE
ZWT - co byste měli vědět - studijní program KIZI VŠEZWT - co byste měli vědět - studijní program KIZI VŠE
ZWT - co byste měli vědět - studijní program KIZI VŠEStanislav Vojíř
 
E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...
E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...
E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...Taste
 
Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...
Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...
Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...Taste
 
Project Restart 2024: Karel Smutný - Specializace patří do 19. století
Project Restart 2024: Karel Smutný - Specializace patří do 19. stoletíProject Restart 2024: Karel Smutný - Specializace patří do 19. století
Project Restart 2024: Karel Smutný - Specializace patří do 19. stoletíTaste
 
Project Restart 2024: Lenka Auerová - Budování holistické organizace
Project Restart 2024: Lenka Auerová - Budování holistické organizaceProject Restart 2024: Lenka Auerová - Budování holistické organizace
Project Restart 2024: Lenka Auerová - Budování holistické organizaceTaste
 
Vybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠE
Vybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠEVybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠE
Vybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠEStanislav Vojíř
 
Project Restart 2024: Jiří Langr - Mytologie projektů
Project Restart 2024: Jiří Langr - Mytologie projektůProject Restart 2024: Jiří Langr - Mytologie projektů
Project Restart 2024: Jiří Langr - Mytologie projektůTaste
 
Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...
Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...
Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...Taste
 
Project Restart 2024: Pavel Minář - Procesy pro lepší projekty
Project Restart 2024: Pavel Minář - Procesy pro lepší projektyProject Restart 2024: Pavel Minář - Procesy pro lepší projekty
Project Restart 2024: Pavel Minář - Procesy pro lepší projektyTaste
 

Último (10)

Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?
Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?
Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?
 
ZWT - co byste měli vědět - studijní program KIZI VŠE
ZWT - co byste měli vědět - studijní program KIZI VŠEZWT - co byste měli vědět - studijní program KIZI VŠE
ZWT - co byste měli vědět - studijní program KIZI VŠE
 
E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...
E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...
E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...
 
Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...
Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...
Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...
 
Project Restart 2024: Karel Smutný - Specializace patří do 19. století
Project Restart 2024: Karel Smutný - Specializace patří do 19. stoletíProject Restart 2024: Karel Smutný - Specializace patří do 19. století
Project Restart 2024: Karel Smutný - Specializace patří do 19. století
 
Project Restart 2024: Lenka Auerová - Budování holistické organizace
Project Restart 2024: Lenka Auerová - Budování holistické organizaceProject Restart 2024: Lenka Auerová - Budování holistické organizace
Project Restart 2024: Lenka Auerová - Budování holistické organizace
 
Vybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠE
Vybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠEVybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠE
Vybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠE
 
Project Restart 2024: Jiří Langr - Mytologie projektů
Project Restart 2024: Jiří Langr - Mytologie projektůProject Restart 2024: Jiří Langr - Mytologie projektů
Project Restart 2024: Jiří Langr - Mytologie projektů
 
Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...
Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...
Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...
 
Project Restart 2024: Pavel Minář - Procesy pro lepší projekty
Project Restart 2024: Pavel Minář - Procesy pro lepší projektyProject Restart 2024: Pavel Minář - Procesy pro lepší projekty
Project Restart 2024: Pavel Minář - Procesy pro lepší projekty
 

ADO.NET

  • 2. ADO.NET Technologie ADO.NET (ActiveX Data Objects) nahrazuje technologii ADO určenou pro programování v nativním kódu pomocí komponent COM. Microsoft dodává ADO.NET s nativní podporou pro servery SQL a Oracle, dále potom pro databáze, které implementují rozhraní OLE DB nebo ODBC. Existují však nativní podpory i pro další databázové servery od jiných poskytovatelů, jako např. MySQL, Oracle aj. Součástí ADO.NET je mnoho sdílených tříd, které se používají všemi druhy databází. V prostoru jmen System.Data jsou deklarovány např. třídy DataSet, DataTable, DataRelation. Další sdílené třídy jsou deklarovány v prostoru jmen System.Data.Common, jako např. DataColumnMapping, DataTableMapping.
  • 3. Třídy specifické pro různé DB Kromě sdílených tříd obsahuje ADO.NET třídy specifické pro různé databáze. Např. pro připojení k databázi obsahuje třídy: - SqlConnection – pro SQL server v prostoru jmen System.Data.SqlClient, - SqlCeConnection – pro server SQL Compact Edition (dále jen SQL CE) v prostoru jmen System.Data.SqlServerCe, - OracleConnection – pro server Oracle v prostoru jmen System.Data.OracleClient, - OleDbConnection – pro servery implementující rozhraní OLE DB v prostoru jmen System.Data.OleDb - OdbcConnection – pro servery implementující rozhraní ODBC v prostoru jmen System.Data.Odbc.
  • 4. Třídy specifické pro různé DB Uvedené třídy mají od verze ADO.NET 2.0 společného předka abstraktní třídu DbConnection, která implementuje rozhraní IDbConnection. V nižších verzích .NET uvedené třídy neměly společného předka, ale jen společné rozhraní. Tento princip je použit i pro další specifické třídy. Specifické třídy mají předponu odpovídající druhu databáze. Mají společného předka abstraktní třídu, která má předponu Db a ta implementuje rozhraní, které má předponu IDb.
  • 5. Databázové připojení Pro přístup k databázi se musí poskytnout parametry připojení, jako např. název počítače, na kterém je databázový server spuštěn, přihlašovací údaje apod. Při připojení k databázi se používají třídy typu DbConnection, které pracují s připojovacím řetězcem, jenž se zpravidla inicializuje konstruktorem. Připojovací řetězec obsahuje vlastnosti a jejich hodnoty oddělené středníkem. Např. pro databázi Oracle na počítači s adresou IP 10.65.24.2: string connectionString = "Data source = 10.65.24.2/orcl.65.24.2; User ID = system; Password = heslo";
  • 6. Databázové připojení Pro SQL Server na stejném počítači, na kterém je spuštěn klient s integrovaným ověřováním totožnosti uživatele pomocí uživatelských účtů systému Windows: string connectionString = "server = (local); integrated security=SSPI;database=Northwind"; Pro databázi SQL Express s připojením k databázovému souboru (s příponou .mdf) s integrovaným ověřováním totožnosti uživatele pomocí uživatelských účtů systému Windows: string connectionString = @"Data Source=.SQLEXPRESS; AttachDbFilename=d:AdventureWorksLT_Data.mdf; Integrated Security=True;Connect Timeout=30;User Instance=True";
  • 7. Databázové připojení Konstruktor třídy typu DbConnection neotevře spojení. K tomu se používá metoda Open: void Open() Zavření spojení provede metoda Close: void Close() Spojení je možné otevírat a zavírat několikrát. Třída implementuje rozhraní IDisposable. Pokud se spojení nezavře metodou Close, zavře jej metoda Dispose.
  • 8. Databázové připojení – příklad Příklad demonstruje otevření připojení na vzorovou databázi SQL CE. Pro vytvoření připojovacího řetězce lze též použít třídy typu DbConnectionStringBuilder, např. SqlConnectionStringBuilder: SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); builder.DataSource = "(local)"; builder.IntegratedSecurity = true; builder.InitialCatalog = "d:Northwind"; SqlConnection con = new SqlConnection(builder.ConnectionString); https://goo.gl/WeY3cQ
  • 9. Továrna poskytovatele dat Od .NET 2.0 je k dispozici třída továrny poskytovatele dat DbProviderFactory, která obsahuje metody pro vytvoření tříd pro práci s daty na abstraktní úrovni bez znalosti konkrétního typu databáze. Jedná se například o následující virtuální metody: DbCommand CreateCommand() DbConnection CreateConnection() DbDataAdapter CreateDataAdapter() DbParameter CreateParameter()
  • 10. Továrna poskytovatele dat Vytvoření této třídy zajišťuje třída DbProviderFactories a její statická metoda GetFactory: DbProviderFactory GetFactory(string providerInvariantName) Pro vytvoření továrny poskytovatele dat je potřebné jméno poskytovatele. K tomu lze využít definici připojovacího řetězce v konfiguračním souboru aplikačního nastavení, a to sekci <connectionStrings>.
  • 11. Továrna poskytovatele dat V prostředí Visual Studio 2010 lze vytvořit připojovací řetězec pomocí menu Project | Properties | Settings – výběr typu (Connection string) a buď přímo zapsat řetězec, nebo zvolit tlačítko s třemi tečkami a zadat připojení k databázi pomocí dialogového okna. Konfigurační soubor app.exe.config pro databázi SQL CE může mít např. následující obsah: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections></configSections> <connectionStrings> <add name="Connection02.Properties.Settings.Northwind" connectionString="Data Source=D:Northwind.sdf" providerName="Microsoft.SqlServerCe.Client.3.5" /> </connectionStrings> </configuration>
  • 12. Příkazy Pro vykonání příkazů jazyka SQL slouží třída typu DbCommand. Třída SqlCeCommand obsahuje 4 konstruktory umožňující nastavit text SQL příkazu, databázové připojení a případně i transakci. SqlCeCommand() SqlCeCommand(string commandText) SqlCeCommand(string commandText, SqlCeConnection connection) SqlCeCommand(string commandText, SqlCeConnection connection, SqlCeTransaction transaction)
  • 13. Příkazy Třída typu DbCommand dále obsahuje vlastnost CommandType, která poskytuje nebo nastavuje typ příkazu výčtového typu obsahujícího následující výčtové konstanty: - Text – text SQL příkazu – implicitní hodnota, - StoredProcedure – jméno uložené procedury, - TableDirect – jméno tabulky. Lze použít jen pro rozhraní OLE DB. Třída typu DbCommand implementuje rozhraní IDisposable. Při volání metody Dispose dojde pouze k likvidaci instance třídy DbCommand nikoliv také k zavření databázového připojení.
  • 14. Příkaz pro modifikaci databáze Příkaz, kterým se modifikuje databáze, lze spustit voláním následující metody třídy typu DbCommand: int ExecuteNonQuery() Používá se pro SQL příkazy UPDATE, INSERT a DELETE nebo tvorbu databáze. Pro příkazy UPDATE, INSERT a DELETE vrací počet ovlivněných řádků. Pro ostatní příkazy vrací -1. https://goo.gl/D9PAOq