tutorial for ado.net

32
Jelena Jurišić Ergonomija računalne i programske opreme Razvojni put od DAO do ADO.NET

Upload: zvuckovic

Post on 16-Apr-2015

79 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Tutorial for Ado.net

Jelena Jurišić

Ergonomija računalne i programske opreme

Razvojni put od DAO do ADO.NET

Page 2: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 2

UVOD.........................................................................................................................................3ODBC ( OPEN SOURCE DATABASE CONNECTIVITY )...................................................4

Upotreba ODBC-a u C# (Visual Studio.NET 2003)..............................................................5Stvaranje veze korištenjem Server Explorera.....................................................................5Stvaranje veze programski..................................................................................................6

Korištenje ODBC Data Source Administrator-a.....................................................................7Korištenje ODBC-a u PHP-u..............................................................................................8

Pristupanje tekstualnim datotekama korištenjem ODBC-a....................................................9Od DAO do ADO.NET.............................................................................................................13

DAO......................................................................................................................................13Korištenje DAO objektnog modela u Visual Basicu........................................................14Spajanje na bazu...............................................................................................................14Dohvat i pregled podataka :..............................................................................................14

RDO......................................................................................................................................15ODBCDirect.........................................................................................................................16

Korištenje ODBCDirect Modela u Visual Basicu............................................................17OLE DB................................................................................................................................18ADO......................................................................................................................................18

Prednosti korištenja ADO ili OLE-DB............................................................................19Korištenje ADO objektnog modela u Visual Basicu........................................................20Spajanje na bazu :.............................................................................................................20Dohvat i pregled podataka :..............................................................................................20

ADO MD..............................................................................................................................20ADOX...................................................................................................................................20RDS.......................................................................................................................................21ADO.NET.............................................................................................................................21Korištenjem ADO.NET u C#................................................................................................23

Stvaranje veze...................................................................................................................23Pregled podataka korištenjem DataReader objekta..........................................................24Upotreba DataAdaptera....................................................................................................25

Kako odabrati najbolje sučelje za pristup podacima.................................................................25LITERATURA..........................................................................................................................26

Page 3: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 3

UVOD

Od sredine devedesetih godina programeri baza podataka u stalnoj su potrazi za vrhuncem nezavisnosti baza podataka.

Osnovna ideja sastoji se u korištenju jednog API-ja koji bi se mogao upotrijebiti za komunikaciju s mnogo različitih izvora podataka.Upravo upotreba takvog API-ja oslobodila bi programere od ovisnosti o jednom mehanizmu za baze podataka i omogućila im prilagodbu velikom broju različitih zahtjeva.

Putovanje ćemo započeti upoznavanjem ODBC-a ( Open Database Connectivity) te zatim nastaviti opisom Microsoftovih objekata ; DAO (Data Access Object), RDO (Remote Data Object), ADO (ActiveX Data Object), ADO MD (Microsoft ActiveX Data Objects Multidimensional), ADOX (Microsoft ActiveX Data Objects Extensions for Data Definition Language and Security ), RDS (Remote Data Service), ADO.NET ( .NET verzija ActiveX Data Object).

Page 4: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 4

ODBC ( OPEN SOURCE DATABASE CONNECTIVITY )

Cilj ODBC-a je omogućiti pristup bilo kojem podatku unutar bilo koje aplikacije neovisno o kojem se sustavu za upravljanje bazom podataka radi. ODBC to postiže dodavanjem, odnosno umetanjem srednjeg sloja, koji se zove pogonski program baze podataka, između aplikacije i SUBP-a. Svrha tog sloja je prevođenje upita upućenih aplikacijskim podacima u naredbe koje sustav za upravljanje bazom podataka razumije.

Slika 1. ODBC arhitektura

Osnovna prednost ODBC-a je što aplikacija ne ovisi o sustavu za upravljanje bazom podataka te će promjena SUBP-a za ispravan rad aplikacije zahtijevati samo novi ODBC driver bez promjena samoga koda aplikacije.

Kada se spremi neka tekstualna datoteka napisana u nekom od programa za obradu text-a (npr. txt u Notepad-u), postoji mogućnost da se ista datoteka otvori i dodatno obradi u nekom drugom namjenski sličnom programu (npr. Word-u).S obzirom da ne postoji uobičajeni standardni format za čuvanje baze podataka u jednoj datoteci, ne postoji ni način da se baza podataka snimljena jednim programom za baze podataka učita drugim programom slične namjene. No, i pored toga, svi programi koji "barataju" sa bazama podataka čuvaju podatke pomoću unificirane strukture: tabele, zapisi, relacije, ključevi,... ODBC koristi ovu osobinu da bi programeru omogućio što lakši rad sa podacima u bazi, te se programer orijentira ka

APPLICATION

ODBCDRIVER MANAGER

ODBCDRIVERODBC

DRIVERODBC

DRIVER

ODBCDRIVERODBC

DRIVER

DB DB

ODBC interface

Page 5: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 5

funkcionalnosti aplikacije, a ne pisanju nezavisnih programa koji će komunicirati sa različitim bazama.

Upotreba ODBC-a u C# (Visual Studio.NET 2003)

Korištenjem ODBC-a spojiti ćemo se na :

Microsoft Access bazu podataka MYSQL bazu podataka

Stvaranje veze korištenjem Server Explorera

1. U Server Explorer-u, desnim klikom miša kliknite Data Connections i zatim Add Connection.

2. U Data Link Properties dialogu, prvo odaberite Provider tab. 3. Izaberite Microsoft OLE DB Provider for ODBC Drivers, i zatim pritisnite Next. 4. Iz ponuđene liste izaberite ODBC izvor podataka kojemu želite pristupiti (npr. Ms Access

database ako želite raditi s Microsoft Access-om). 5. Upišite korisničko ime i lozinku za pristup bazi podataka ( ako su potrebni ).6. Pritisnite OK.

Slika 2 : Stvaranje veze korištenjem Server Explorera

Sada u Server Exploreru u popisu aktivnih veza ( ispod dataConnections ) možete vidjeti vezu na bazu podataka koju ste upravo stvorili.

Page 6: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 6

Stvaranje veze programski

Programski ćemo se spojiti na MYSQL bazu podataka korištenjem MYSQL ODBC Drivera. Driver se može skinuti s sljedeće adrese :

www.mysql.com/downloads/api-myodbc.html

Korištenje ODBC Data Source Administrator-a

Pod operacijskim sustavom Windows Xp odabirom opcije Control PanelAdministrative toolsData Sources (ODBC) otvara se dialog putem kojega možemo vidjeti sve ODBC drivere koji su instalirani na našemu računalu kao i

static void Main(string[] args){try{//Connection string za MyODBC 2.50/*string MyConString = "DRIVER={MySQL};" +"SERVER=localhost;" +"DATABASE=test;" +"UID=username;" +"PASSWORD=password;" +"OPTION=3";*///Connection string za MyODBC 3.51string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +"SERVER=localhost;" +"DATABASE=test;" +"UID=username;" +"PASSWORD=password;" +"OPTION=3";

// Spajanje na MYSQL bazu korištenjem MyODBC-aOdbcConnection MyConnection = new OdbcConnection(MyConString);MyConnection.Open();

MessageBox.Show("\n !!! Spajanje na baza je uspjelo !!!\n");}catch ( Exception ex ){MessageBox.Show(“ Neuspješno spajanje! “);}}

Page 7: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 7

podatke o spajanje na pojedinu bazu podataka korištenjem određenog drivera ( tab DSN ). Odabirom opcije “Configure” navedene podatke o pristupu je ovdje moguće i promijeniti.

Slika 3 : Korištenje ODBC Data Source Administratora

Korištenje ODBC-a u PHP-u

1. Odaberite Administrative Tools ikonu u Control Panelu. 2. Dvaput kliknite mišem ikonu Data Sources (ODBC). 3. Odaberite tab System DSN.

Page 8: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 8

4. Odaberite opciju Add. 5. Odaberite Microsoft Access Driver i kliknite Finish. 6. Na sljedećem ekranu, odaberite Select kako biste locirali bazu podataka. 7. Bazi podataka dodijelite Data Source Name (DSN). 8. Odaberite OK.

Kreiranje veze i izvršavanje upita :

$conn=odbc_connect('northwind','','');$sql="SELECT * FROM customers"; $rs=odbc_exec($conn,$sql);

Dohvat jedne n-torke :

odbc_fetch_row($rs)

Dohvat vrijednosti prvoga atributa unutar dohvaćene n-torke :

$compname=odbc_result($rs,1);

Dohvat Vrijednosti atributa s imenom "CompanyName" iz nevedene n-torke:

$compname=odbc_result($rs,"CompanyName");

<html><body><?php$conn=odbc_connect('northwind','','');if (!$conn) {exit("Connection Failed: " . $conn);}$sql="SELECT * FROM customers";$rs=odbc_exec($conn,$sql);if (!$rs) {exit("Error in SQL");}echo "<table><tr>";echo "<th>Companyname</th>";echo "<th>Contactname</th></tr>";while (odbc_fetch_row($rs)){ $compname=odbc_result($rs,"CompanyName"); $conname=odbc_result($rs,"ContactName"); echo "<tr><td>$compname</td>"; echo "<td>$conname</td></tr>";}odbc_close($conn);echo "</table>";?></body></html>

Page 9: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 9

Pristupanje tekstualnim datotekama korištenjem ODBC-a

Slika 4 : Primjer .txt datoteke

Tekstualnoj datoteci moguće je pristupati na dva načina :

1. direktno iz aplikacije2. stvaranjem “data source-a” za navedenu txt datoteku

Ovdje ćemo se orjentirati na drugi način tj. stvaranje novog DSN-a. Na administracijskoj formi ODBC-a odaberemo opciju «New» i izaberemo Microsoft Text Driver (*.txt, *.csv).

Page 10: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 10

Slika 5 : Odabir Microsoft Text Drivera

Nakon toga u dialogu “ODBC Text Setup” definiramo ime DSN-a kao I kratak opis.

Slika 6 : Postavke Text ODBC-a

Nakon toga moguće je izabrati direktorij. Čitava txt datoteka koristi se kao jedna tablica unutar baze podataka.

Slika 7 : Odabir direktorija

Page 11: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 11

Odabirom opcije «Define Format», moguće je definirati različite formate. Npr. moguće je za delimiter odabrati tabulator, zarez itd. Moguće je mijenjati imena kolonama, brisati ih ili dodavati.

Slika 8 : Definiranje formata

Nakon što smo kreirali novi DSN, možemo ga koristiti kao izvor za našu novu vezu :

OdbcConnection conn = new OdbcConnection("DSN=TxtDSN");

Kao što je već ranije navedeno, txt datoteci moguće je pristupiti i direktno iz aplikacije korištenjem Text ODBC drivera. U tom slučaju «Connection string» izgleda nešto složenije :

String ConnectionString = @"Driver={Microsoft Text Driver (*.txt;*.csv)};DBQ=c:\";

Primjer u C# koji dohvaća sve n-torke iz navedene .txt datoteke te ih prikazuje U DataGridu izgleda ovako :

private void Form1_Load(object sender, System.EventArgs e){

// Connection string for a Text Filestring ConnectionString = @"Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=c:\";// Query the Employees.txt file as a table

Page 12: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 12

OdbcConnection conn = new OdbcConnection(ConnectionString);conn.Open(); 

OdbcDataAdapter da = new OdbcDataAdapter("Select * FROM Employees.txt", conn); 

DataSet ds = new DataSet();da.Fill(ds, "TextDB"); 

dataGrid1.DataSource = ds.DefaultViewManager;// Close the connectionconn.Close();}

Od DAO do ADO.NET

DAO

Putovanje prema ADO.NET započelo je kada je Microsoft definirao DAO objektni model za pristup podacima. DAO je dizajniran, prije svega zbog potreba programera u Visual Basicu da pristupe bazi podataka Microsoft Access. Tehnologija se mogla koristiti i za pristup SQL Serveru ili Oracle-u no pritom se pokazala neodgovarajućom prije svega zbog velike sporosti. Iako DAO koristi ranije spomenuti ODBC, proces je bio spor jer je DAO dizajniran isključivo za komunikaciju s JET ENGINE-om. JET je prosljeđivao pozive između DAO i ODBC i upravo je taj korak rezultirao sporom vezom prilikom korištenja baza podataka različitih od Microsoft Accessa.

DAO

ODBCDRIVERODBC

DRIVERODBC

DRIVER

ODBCDRIVERODBC

DRIVER

DB DB

JET ENGINE

ODBC DRIVER MANAGER

MDBFILES

MDBFILES

APPLICATION

Page 13: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 13

Slika 9. DAO ( Data Access Object ) arhitektura

Korištenje DAO objektnog modela u Visual Basicu

Spajanje na bazu

Spajanje na bazu moguće je korištenjem JET-a ili korištenjem ODBC-a.

DAO example - JET Connection

Dim ws as WorkspaceDim db as Database

Set ws=DBEngine.Workspaces(0)set db=ws.OpenDatabase({databasepath and name})

DAO example - ODBC Connection

Dim ws as Workspace

Page 14: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 14

dim db as databasedim strConnection as string

set ws=DBEngine.Workspaces(0)let strConnection= "ODBC;DSN=" & DatabaseName & ";UID=" & UserName & ";PWD=" & UserPasswordset db=ws.OpenDatabase("", False, False, strConnection)

Dohvat i pregled podataka :

Dim rs as recordset

set rs=db.openrecordset({tablename or SQL})do while not rs.eof 'Put the code here for what to do with the information. 'The field information can be access by the field name intID=rs!IDField 'Or by the order number it is in the list (starting at 0) intString=rs.Field(1) rs.movenextloop

RDO

Slijedeća tehnologija koja je trebala nastaviti put gdje je stao DAO bila je RDO ( Remote Data Object ). Njegova namjena bila je, prije svega, osigurati efikasan pristup SQL Serveru i Oraclu. RDO tehnologija pristupala je ODBC-u izravno, a ne preko JET ENGINE-a. RDO je prije svega, bio namjenjen programerima u Visual Basicu.

RDO

ODBCDRIVERODBC

DRIVERODBC

DRIVER

ODBCDRIVERODBC

DRIVER

DB DB

ODBC DRIVER MANAGER

APPLICATION

Page 15: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 15

Slika 10. RDO ( Remote Data Access ) arhitektura.

ODBCDirect

Istovremeno s RDO tehnologijom, Microsoft predstavlja i ODBCDirect tehnologiju koja omogućuje već postojećim aplikacijama koje koriste DAO objektni model spajanje na SQL Server i Oracle bez negativnih učinaka zbog prosljeđivanja komunikacije s ODBC-om preko JET-a.

RDO

ODBCDRIVERODBC

DRIVERODBC

DRIVER

ODBCDRIVERODBC

DRIVER

DB DB

ODBC DRIVER MANAGER

APPLICATION

DAO

Page 16: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 16

Slika 11. ODBCDirect arhitektura

Korištenje ODBCDirect Modela u Visual Basicu

Sub ODBCDirectExample() ' This example uses ODBCDirect to loop through ' a Recordset on SQL Server 6.5. Dim wkODBCDirect As DAO.Workspace Dim rstODBCDirect As DAO.Recordset Dim conODBCDirect As DAO.Connection Dim szSQL As String Dim szConnect As String

' Define the SQL and Connect string. szSQL = "select * from authors" szConnect = "ODBC;DSN=Pubs;UID=sa;PWD=;" ' First create the ODBCDirect workspace. Set wkODBCDirect = DBEngine.CreateWorkspace("", "", _ "", dbUseODBC) ' Second, establish a connection to the ODBC Data Source. Set conODBCDirect = wkODBCDirect.OpenConnection("", _ dbDriverComplete, False, szConnect) ' Third, open the Recordset.

Page 17: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 17

Set rstODBCDirect = conODBCDirect.OpenRecordset(szSQL)

'Loop through the recordset. With rstODBCDirect Do Until .EOF Debug.Print .Fields(0) .MoveNext Loop End With

Set rstODBCDirect = Nothing Set conODBCDirect = Nothing Set wkODBCDirect = NothingEnd Sub

OLE DB

Tijekom godina ODBC je postao standard za pristup različitim bazama podataka. ODBC je najoptimiziranija metoda pristupa podacima baziranima na SQL-u. Problem predstavlja želja za pristupom podacima u nerelacijskom izvoru podataka koji ne koristi SQL. Upravo taj problem rješio je OLE DB. OLE DB se sastoji od tri komponente : konzumenta podataka (npr. Aplikacija), osiguravatelja podataka i komponente koja procesira i transportira podatke.

E-MAILE-MAIL

DIRECTORYSERVICESDIRECTORY

SERVICES

OLE DBPROVIDER

APPLICATION

OLE DBPROVIDER

OLE DBPROVIDER

RDBMSRDBMS

ODBC

Page 18: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 18

Slika 12. OLE DB arhitektura

Kao što je prikazano na slici, OLE DB omogućava pristup različitim formatima koji skladište podatke. Slika takođe govori da OLE DB održava vezu ka pojedinim bazama podataka preko ODBC-a. OLE DB omoćava komunikaciju i razmjenu podataka sa raznim aplikacjama: Access, SQL Server, Oracel, Exchange Server, Excel, FoxPro,... Ako je program za skladištenje podataka prvi nivo komunikacije, OLE DB (ponekad preko ODBC-a) predstavlja drugi nivo ove komunikacije.

ADO

U ovom trenutku postojale su dvije različite tehnologije za pristup podacima unutar različitih SUBP-ova. To je stvaralo probleme u slučajevima kada je jedna aplikacija morala pristupiti i bazi podataka Microsoft Access i SQL Serveru ili Oraclu. U prvom slučaju preporaučalo se korištenje DAO objektnog modela, a u drugom RDO objektnog modela ( korištenje DAO objektnog modela u ovom slučaju se pokazalo presporim). Microsoft je rješenje problema pronašao u novoj tehnologiji ADO ili ActiveX Data Objects. Iako se ADO većinom koristi za pristup relacijskim bazama podataka, dizajniran je za pristup univerzalnim podacima. ADO se temelji na OLE DB-u i može se reći da ADO u biti predstavlja wrapper oko OLE-DB-a. OLE-DB je vrlo veliki i kompleksan te ga ADO znatno pojednostavnjuje.

Prednosti korištenja ADO ili OLE-DB

1. COM prednosti - ADO ( OLE-DB) je skup COM sučelja. Dakle, ADO omogućuje pristup različitim tipovima podataka, relacijskim i ne relacijskim. Npr. njegovim korištenjem možemo pristupiti relacijskim bazama podataka, tekstualnim datotekama, e-mailovima korištenjem programskih jezika kao što su VC++, Java, VB, Delphi itd.

2. Jednostavna i brza upotreba – Samo nekoliko linija koda potrebno je za pristup podacima.

3. Brz pristup podacima – ADO omogućuje direktan pristup tablicama.

Prema relacijskim podacima u biti se koristi ODBC.

Page 19: Tutorial for Ado.net

VC ++VC ++

VBVB

DELPHIDELPHI

VISUALJ++

VISUALJ++

ADO

OLE - DB

E-MAILE-MAIL

DIRECTORYSERVICESDIRECTORY

SERVICES

RDBMSRDBMS

ODBC

Razvojni put od DAO do ADO.NET 19

4. “Disconnected” pristup – ADO podržava tzv. Disconnected pristup. To znači da kada se npr. preko weba spojimo na neki izvor podataka, ADO sačuva kopiju tih podataka i koristi ju sve dok se podaci ne promijene. U tom trenutku ADO promijenjene podatke šalje natrag na server.

Slika 13. ADO arhitektura

Kao što možemo vidjeti iz ove slike Visual Basic i Delphi se preko ADO objektnog modela povezuju s OLE-DB-om, dok Visual C++ ili Visual J++ mogu s OLE DB-om komunicirati ili izravno ili također preko ADO modela.

Za razliku od svojih prethodnika (DAO i RDO), ADO objektni model pruža korisniku mnogo veću fleksibilnost uz manji utrošak vremena. To je ostvareno na način da objekti niže razine mogu samostalno egzistirati u kodu. Programer može iskoristiti objekt koji najbolje odgovara definiranom zadatku bez kreiranja mnogih drugih objekata koji se u hijerarhiji nalaze iznad navedenog objekta, a nisu nužni u samom programu. Ako će ADO trebati/zahtijevati i te objekte, stvoriti će ih i koristiti bez znanja samog programera. Time se znatno pojednostavnjuje zadatak programera.

Korištenje ADO objektnog modela u Visual Basicu

Spajanje na bazu :

Page 20: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 20

Dim ad as ADODB.Connection

set ad=New ADODB.ConnectionLet ad.ConnectionString= "ODBC;DSN=" & DatabaseName & ";UID=" & UserName & ";PWD=" & UserPasswordad.Open

Dohvat i pregled podataka :

dim ar as ADODB.recordset

set ar=new adodb.recordsetar.open {SQL Statement}do while not ar.EOF 'Put the code here for what to do with the information. 'The field information can be access by the field name intID=ar!IDField 'Or by the order number it is in the list (starting at 0) intString=ar.Field(1).value ar.movenextloop

ADO MD

ADO MD (Microsoft ActiveX Data Objects Multidimensional) omogućava jednostavan pristup multidimenzijskim podacima korištenjem jezika kao što su Microsoft Visual Basic i Microsoft Visual C++. ADO MD proširuje Microsoft ActiveX Data Objects (ADO) na način da uvodi nove objekte koji su specifični multidimenzijskim podacima kao što su CubeDef i CellSet objekti.

ADOX

ADOX (Microsoft ActiveX Data Objects Extensions for Data Definition Language and Security ) uvodi nove objekte, prije svega, za kreiranje i manipuliranje različitim shemama. Upravo zbog toga, moguće je napisati kod koji će raditi s različitim izvorima podataka neovisno o razlikama koje postoje unutar njihovih prirodnih sintaksa. Također dodaje i sigurnosne objekte koji omogućavaju manipulaciju s različitim korisnicima, grupama i dozvolama.

RDS

RDS (Remote Data Service) omogućuje prijenos podataka sa servera na klijent ili web stranicu, manipuliranje s podacima na klijentu i slanje promjena na server u jednom kružnom putu.

ADO.NET

ADO.NET predstavlja sljedeću fazu u razvoju ADO objektnog modela. ADO.NET nastao je s razvojem .NET framework-a i redizajniran i poboljšan je prije svega za upotrebu na internetu i u distribuiranim arhitekturama.

Page 21: Tutorial for Ado.net

ADO.NET CODE

DataSet Object

.NET Provider

RDBMS

Razvojni put od DAO do ADO.NET 21

ODBC .NETData Provider

OLEDB .NETData Provider

Native SQL Server.NET Data Provider

Native Oracle .NET Data Provider

Page 22: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 22

Slika 14 : ADO.NET arhitektura

ADO.NET koristi neke od već postojećih ADO objekata kao što su “Connection” i “Command” objekti, ali uvodi i neke nove kao što su «DataSet», «DataReader» i «DataAdapter» objekti.Najveću promjenu predstavlja upravo DataSet objekt koji kao i baza podataka sadrži tablice, kolone, relacije koristeći tzv. disconnected pristup, tj. sam DataSet ne zna ništa o izvoru podataka koje sadrži.DataAdapter povezuje DataSet sa samom bazom podataka. To je objekt koji se spaja na bazu podataka kako bi napunio DataSet ili se s druge strane, spaja na bazu kako bi izvrsio update na temelju postojećih podataka u DataSet objektu. Iz navedenog, lako je zaključiti da DataAdapter u biti predstavlja most između DataSet-a i njegovog izvora podataka.Sam DataSet objekt baziran je na XML-u i kao takav prihvaća različite modele podataka. Kao što je već navedeno, DataSet ne zna ništa o izvoru svojih podataka već sve dobivene podatke reprezentira na svoj jedinstveni način. Tek se provideri kao što su OLE DB and SQL Server .NET Data Providers brinu da podaci iz DataSet objekta budu pravilno formatirani za pohranu u odgovarajuću bazu podataka.

ODBC ManagerODBC Manager

OLEDB ManagerOLEDB Manager

ODBC DriversODBC Drivers OLEDB Providers

OLEDB Providers

SQL Server, Oracle, ....

SQL ServerSQL

Server

OracleOracle

DLL interop COM Interop

SQL Server, Oracle, ....

Page 23: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 23

Slika 15 : ADO.NET objekti

Korištenjem ADO.NET u C#

Stvaranje veze

namespace HowTo.Samples.ADONET{

using System;using System.Data.SqlClient;

public class adooverview1{ public static void Main() { adooverview1 myadooverview1 = new adooverview1(); myadooverview1.Run(); }

public void Run() {

SqlConnection mySqlConnection = new SqlConnection("server=(local)\\NetSDK;Trusted_Connection=yes;database=northwind");

try { mySqlConnection.Open(); Console.WriteLine("Opened Connection to {0}", mySqlConnection.ConnectionString);

// Close the connection explicitly

Page 24: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 24

mySqlConnection.Close(); Console.WriteLine("Closed Connection. It is important to close connections explicitly."); } catch { Console.WriteLine("Couldn't Open Connection to {0}", mySqlConnection.ConnectionString); } }}

}

Pregled podataka korištenjem DataReader objekta

namespace HowTo.Samples.ADONET{

using System;using System.Data;using System.Data.SqlClient;

public class adooverview3{ public static void Main() { adooverview3 myadooverview3 = new adooverview3(); myadooverview3.Run(); }

public void Run() { SqlDataReader myReader = null;

SqlConnection mySqlConnection = new SqlConnection("server=(local)\\NetSDK;Trusted_Connection=yes;database=northwind"); SqlCommand mySqlCommand = new SqlCommand("select * from customers", mySqlConnection);

try { mySqlConnection.Open(); myReader = mySqlCommand.ExecuteReader();

Console.Write("Customer ID "); Console.WriteLine("Company Name");

while (myReader.Read()) { Console.Write(myReader["CustomerID"].ToString() + " "); Console.WriteLine(myReader["CompanyName"].ToString()); } } catch(Exception e)

Page 25: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 25

{ Console.WriteLine(e.ToString()); } finally { if (myReader != null) myReader.Close();

if (mySqlConnection.State == ConnectionState.Open) mySqlConnection.Close(); } }}

}

Upotreba DataAdaptera

SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter("select * from customers", myConnection);

mySqlDataAdapter.InsertCommand.CommandText = "sp_InsertCustomer";mySqlDataAdapter.InsertCommand.CommandType = CommandType.StoredProcedure;mySqlDataAdapter.DeleteCommand.CommandText = "sp_DeleteCustomer";mySqlDataAdapter.DeleteCommand.CommandType = CommandType.StoredProcedure;mySqlDataAdapter.UpdateCommand.CommandText = "sp_UpdateCustomers";mySqlDataAdapter.UpdateCommand.CommandType = CommandType.StoredProcedure;

mySqlDataAdapter.Update(myDataSet)

Kako odabrati najbolje sučelje za pristup podacima

Kada kreiraju aplikacije koje rade sa bazama podataka programeri se susreću s neizbježnim pitanjem: koji interface za pristup podacima koristiti? ADO, DAO ili RDO? Vrlo je bitno razumjeti razliku između ova tri interface-a kako bi se donijela što bolja odluka u slučaju konkretne aplikacije. Osnovni problem predstavlja način pomoću kojega trebamo usporediti ove slicna, a opet različita sučelja? Rješenje leži u detaljnom proučavanju svakoga objektnog modela te njegovom usporedbom sa svima ostalima modelima. Jedino pravilno razumijevanje vrijednosti i mogućnosti svakog svakoga sučelja omogućuje donošenje pravilne odluke o tome koji je interface idealan za Vašu aplikaciju.

DAO (Data Access Objects) za Microsoft Jet baze podataka, ili drugačije poznat kao DAO/Jet. DAO/Jet je sučelje za pristup Jet engine-a bazama podataka, kako "čistim" Jet bazama, tako i ISAM bazama podataka, kao što su Access, Btrieve, dBASE, FoxPro ili Paradox. DAO/Jet predstavlja idealno rješenje kada treba pristupiti bazama na lokalnom računalu. Međutim, kada treba pristupiti udaljenim podacima, iako je DAO/Jet sposoban pristupati ODBC izvorima podataka, njegove performanse nisu na željenom nivou. Daljinski pristup je dodatno ograničen, u usporedbi sa direktnim API

Page 26: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 26

sučeljem i Remote Data Objects-om. Počevši od verzije 3.5 DAO-a, omogućeno je sučelje prema RDO-u, preko ODBCDirect-a . Sigurnosne mogućnosti koje nisu implementirane u DAO/Jet engine, nisu ugrađene niti u ODBCDirect. Struktura DAO objektnog modela za ODBCDirect je manje kompleksna u odnosu na Microsoft Jet engine.

Do prije nekoliko godina RDO (Remote Data Objects) predstavljao je najbolje sučelje od svih COM-orijentiranih načina pristupa koji se koriste u Visual Basic-u. RDO je posebno dizajniran za korištenje sa udaljenim ODBC izvorima podataka. Međutim, RDO ne podržava izvjesne mogućnosti DAO/Jet-a, kao na primjer jezik za definiranje podataka DDL (Data Definition Language).

ADO (ActiveX Data Objects) je, od samog početka, razvijan u svrhu sučelja za pristup bazama podataka za korištenje sa Active Server stranicama (ASP-om), kao kompletno rješenje za sve potrebe pristupa podacima. ADO objektni model je najmanje složen od modela svih navedenih sučelja.

ADO je uznapredovao i dokazao se u praksi, te je zamjena za sva druga sučelja za pristup podacima. Jedino sučelje koje mu možda može konkurirati je DAO, zbog svoje odlične podrške za Jet baze podataka.

Literatura

Data Access and Storage Developer Center   www.microsoft.com/data/

Open Database Connectivity - Wikipedia      www.en.wikipedia.org/wiki/ODBC

Accessing Text Files using ODBC Data Provider www.c-sharpcorner.com/Code/2002/Nov/AccessTextDb.asp

An overview of various database technologies for Windows platform www.dotnetheaven.com/

What is DAO? www.webopedia.com/TERM/D/DAO.html

Introduction to Using the Remote Data Object www.msdn.microsoft.com/archive/ en-us/dnarvb4/html/msdn_intrordo.asp

ADO Object Modelwww.msdn.microsoft.com/library/ en-us/ado270/htm/mdmscadoobjmod.asp

The Journey Toward ADO.NET http://www.dotnetjunkies.com/

Page 27: Tutorial for Ado.net

Razvojni put od DAO do ADO.NET 27

ADO.NET Overview www.developer.com/net/vb/article.php/1540311

Database Programming using ADO.NET with C#www.c-sharpcorner.com/Database.asp