webForumDet fria alternativet

vad är skillnaden på ODBC och ADODB?

ASP

4 svar · 362 visningar · startad av Danmagnus

Medlem sedan maj 2000269 inlägg
Frågan#1

hej hej, nån som vill förklara?.

Medlem sedan maj 2000107 inlägg
#2

Eftersom ingen annan verkar vilja ta sig an detta så får väl jag rycka in.

Men kom ihåg, det var du som bad om det.
Sedan kan det bli lite kryptiskt att förklara när man inte kan använda grafik eller diagram i forumet:

ADO står för ActiveX Data Objects och är alla objekt du använder för att kunna komma åt databaser. Tex ADODB.Connection och ADODB.Recordset osv.

Men det är inte ADO som sköter kopplingen till databaserna. Utan det är något som heter OLE DB vilket är en API (Application Programming 0Interface), dvs det är det som används för själva kopplingen till databasen. Sedan så undrar du vad ODBC (Open DataBase Connectivity) är, och precis som OLE DB är det en API för att ansluta sig till en databas. Saken med ODBC är bara den att den är uppbyggd på att man har två vägs access till databasen Hela tiden (som är fallet när du har ett fast lokalt nätverk eller om databasen ligger på din dator) och på så sätt kan göra massor med sökningar snabbt osv. Detta funkar som du säkert förstår inte så bra in på internet, där allting är statiskt. Dvs du skickar över sidan till användaren, sedan så är det bra med det. Så därför gjorde Microsoft OLE DB som är anpassat för internet istället genom att det skickar statiska recordsets och liknande. ODBC används fortfarande, men då mest i programmerings språk som VB och C++.
Att använda dessa API:erna är dock fortfarande lite svårt, så i VB använder man också ADO eftersom det ger dig mycket enklare access till databaserna.

Nu är det så också att ODBC är mer spritt och stödjer mer databaser än OLE DB eftersom det är en oberoende orginisation som har hand om det. Så OLE DB kan i sin tur använda ODBC för att sedan koppla vidare sig till databaser. Detta ska tydligen gå lite långsammare.

Detta upptäckte jag själv alldeles nyligen. Så egentligen så borde man använda en annan koppling för access databaser än den alla använder nu. Ser ut såhär (direkt från IIS 5.0 hjälpen. Så jag vet inte om den funkar i tidigare verisioner av IIS):

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=sökväg till mdb-fil

Istället för denna som de flesta använder:

Driver={Microsoft Access Driver (*.mdb)};DBQ=sökväg till mdb-fil

Nu förväntar jag mig inte att alla ska förstå allt detta. Jag hade nog inte förstått så mycket om jag hade sett det för första gången. Men jag tänkte att det kanske är bättre att du(och alla andra) får ställa frågor. Så ska jag försöka komplettera. Sedan så finns det säkert någon som har ännu mer koll än jag på detta. Så kom gärna med inlägg. :)

------------------
/Magnus aka Zaphod
www.designmodule.com.bi

[Redigerat av Zaphod den 10 jul 2000]

Medlem sedan juni 2000690 inlägg
#3

Jag är väl ingen superexpert men tänkte ge min syn på prestandaskillnaden du nämner...

Bytte för ett tag sedan ifrån ODBC och till OLE DB och märkte en rejäl sänkning av svarstiden! Speciellt på en del äldre databasscripts med loopar.

Dessutom påstås OLE DB råda bot (åtminståne delvis) på problemet med max 10 connections.

Så använd till Access2000:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=

Till Access97:
Provider=Microsoft.Jet.OLEDB.3.5;Data Source=

MvH
/Bengan

Medlem sedan maj 200062 inlägg
#4

Den här använder jag mig av för sqlserver7.

ConnectionString = "Provider=SQLOLEDB;Server=xx.xx.xx.xx;Initial Catalog=mindatabas;User Id=;Password="

Är det funkis eller? Jag använde dsn först men kollade runt lite och bytte.

Medlem sedan juni 2000144 inlägg
#5

Står lite mer om det här... http://www.4guysfromrolla.com/webtech/063099-1.shtml

295 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
156 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
162 ms — ändringar (db)