Avatar billede jacand Nybegynder
28. juli 2005 - 20:12 Der er 4 kommentarer og
1 løsning

ADODB.Connection eller ADODB.RecordSet

Hvor bruger man Server.CreateObject("ADODB.Connection")
og hvor bruger man Server.CreateObject("ADODB.RecordSet")

Hvad er fordele/ulemper ved dem?
Avatar billede necro655 Nybegynder
29. juli 2005 - 08:51 #1
du skal bruge begge..

ADODB.connection er det object du skal bruge til at oprette forbindelse til en database

ADODB.Recordset er det object somdu skal bruge til at lave en forspørgelse i selve databasen som du lige har åbnet

f.eks

Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConnn.open "PROVIDER=sqloledb;Network Library=dbmssocn;SERVER=127.0.0.1;uid=username;pwd=password;database=Database1;app=Webserver"
Set ObjRc =  Server.CreateObject("ADODB.RecordSet")
ObjRc.open "select * from tabel1",ObjConn

sådan.

så skal du bare trække data ud..og lukke databasen connectionen når du er færdig.
Avatar billede busschou Praktikant
29. juli 2005 - 09:12 #2
necro655 >> man _skal_ ikke bruge begge, du kan nøjes med din connection og så bare lave en
Set rs = Conn.Execute("Select * From tabel")
Forskellen er mig bekendt at man ved ADODB.connection laver en forbindelse
Hvis man vælger at execute på den, så bliver hele databasen låst imens man udfører sin query, samtidig kan man kun søge fremad i sine records
Ved en ADODB.Recordset hiver man et recordsæt ud udfra en Cursor og en Lock type
Derved kan man bestemme om hele databasen skal lukkes, eller kun den aktuelle record skal lukkes imens man læser/skriver, og cursoren siger samtidig om man kan søge fremad og bagud i sine records
---
connection
http://www.w3schools.com/ado/ado_ref_connection.asp
execute for connection
http://www.w3schools.com/ado/met_conn_execute.asp
recordset
http://www.w3schools.com/ado/ado_ref_recordset.asp
---
Hvorvidt man vil ønske det ene eller andet afhænger så af mange ting
På en site hvor der ikke er meget trafik, så gør det intet at bruge første metode
På en site hvor 1000 personer på een gang skal have lov til at oprette og slette i databasen, så er et recordset smart da du kan sætte din lock således at der ikke er total låst, hvorved flere kan komme til ad gangen frem for at danne een lang kø
Avatar billede jacand Nybegynder
30. juli 2005 - 12:43 #3
Jeg skal lige høre om jeg har forstået det rigtigt :-)

Hvis jeg har en side hvor der er mange besøg, så er kode1 bedre end kode2, da kode1 kun låser den post den er nået til, hvor kode2 låser hele tabellen indtil den er færdig.

Men hvad med belastning på sql serveren, belaster kode1 ikke mere end kode2?

<-- kode1 -->
Set rs = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT * FROM tabel where slet = 1"
rs.Open SQL, strDSN, 1, 3
do while not rs.eof
rs.delete
rs.update
rs.movenext
loop
rs.close
set rs = Nothing
<-- end kode1 -->

<-- kode2 -->
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strDSN
strSQL = "delete FROM tabel where slet = 1"
Conn.Execute (strSQL)
conn.close
set conn = nothing
<-- end kode2 -->
Avatar billede busschou Praktikant
30. juli 2005 - 13:56 #4
tjo i og med flere kan tilgå din tabel på en gang så er der en større belastning
Jeg har desværre ingen forstand på denne belastning
Men jeg kan ikke forestille mig andet end at man har lavet metoden fordi sql serveren kan klare det
Altså de fleste systemer kan jo klare flere ting på een gang :o)

Apropro sql server, det er muligt der er forskel på kode 1 fra system til system, access er jo ikke en sql server og er på mange punkter anderledes end mysql og mssql osv
Avatar billede jacand Nybegynder
30. juli 2005 - 22:24 #5
Jeg lavede lige en lille test, og fandt ud af at hvis man bruger kode2 belaster man sin MYSQL meget mindre end ved kode1.
Jeg lavede en side hvor jeg prøvede at flytte en tabel (med ca 700000 poster i) til en anden tabel, kode1 brugte 100% cpu og lavede en timeout efter 10 min. og var ikke færdig.
kode2 brugte også 100% men var færdig efter 2 min.
Så kode2 belaster altså meget mindre end kode1 :-)
Så nu vil jeg gå igang med at omprogrammere hele min sidem da jeg har bygget den op som i kode1, og har et problem med belastningen af min MYSQL server.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester