webForumDet fria alternativet

ADO konstanterna behövs inte?

6 svar · 210 visningar · startad av Harback

HarbackMedlem sedan juni 2001206 inlägg
#1

Jag använder mig av detta kodstycke för att connecta till databasen.

<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("/data/databas.mdb")
SQL = "SELECT * FROM users"
Set RS = Connect.Execute(SQL) %>

Jag testade att ta bort ADO konstanterna (tog bort includefilen alltså) från sidan och det fungerade utmärkt utan dom. Behöver inte adovbs.inc vara includad när man connectar på det här sättet? Varför inte i så fall?

------------------
MVH
Harback

LarsGMedlem sedan dec. 200012 464 inlägg
#2

I och med att du inte använder någon konstant så..

------------------
essentitia preter non sans multiplicandum

PaceMedlem sedan juni 20019 024 inlägg
#3

En konstant är ju bara en variabel med fast värde som inte kan ändras, ex:

hejhopp = 12

Istället för att kunna dessa nummer i huvudet kan man bara inkludera konstanten på detta viset:

"rs.Open hejhopp, blaha, bla, bla"

Vilket kanske innebär:

"rs.Open 12, 34, 56, 74"

Så plocka bort include filen! Den är bara meningslös, såvida man inte kan dessa nummer i huvudet. Annars är det bara att kontrollera i filen om man skulle vara osäker!

------------------
Peter D

HarbackMedlem sedan juni 2001206 inlägg
#4

Innan körde jag den gamla hederliga metoden från webstudio så här:

<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("/data/databas.mdb")

Set RS = Server.CreateObject("ADODB.Recordset") %>

SQL = "SELECT * FROM users"
RS.Open SQL, Connect, adOpenStatic, adLockOptimistic %>

Är det någon skillnad på denna koppling och på kopplingen jag skrev innan? Jag vet att det förstås är skillnad för att jag inte använder några konstanter i den övre men måste man använda dom (adOpenStatic, adLockOptimistic)? Vad gör dom?

------------------
MVH
Harback

PaceMedlem sedan juni 20019 024 inlägg
#5

De gör ingenting egentligen. De bär bara med sig numrena...

RS.Open SQL, Connect, adOpenStatic, adLockOptimistic

Är alltså detsamma som

RS.Open SQL, Connect, 3, 3

Den första trean kallas "cursor_type" och och den andra trean "lock_type"...
kan ej i huvudet exakt vad 3 och 3 gör men fråga @nders eller nån ;)

------------------
Peter D

HarbackMedlem sedan juni 2001206 inlägg
#6

Men måste man ha med dessa konstanter när man kopplar till databasen, lägger till nya poster, redigerar m.m.? Räcker det med att skriva:

Set RS = Connect.Execute(SQL)

utan konstanterna för att det ska fungera smärtfritt eller måste man ha med konstanterna???

------------------
MVH
Harback

PaceMedlem sedan juni 20019 024 inlägg
#7

Du måste ha med "RS.Open SQL, Connect, 3, 3" därför att du då säger "nu vill jag skriva till databasen!".

Om du bara använder "Set RS = Connect.Execute(SQL)" kan du bara läsa från databasen.

Och åter nej, konstanterna behövs verkligen inte - använd de riktiga talen istället!

------------------
Peter D

138 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)