Avatar billede michaelfp Nybegynder
20. september 2004 - 18:50 Der er 5 kommentarer og
1 løsning

Ekspertråd søges vedr. connect (åbne/lukke) database

Hej Eksperter,

På alle mine asp sider, hvor data fra access databasen vises, rettes eller behandles, starter jeg på siden med at åbne forbindelsen til databasen og til slut på hver side, lukkes databasen.

Jeg har to funktioner - én til at åbne databasen og en til at lukke.

Hvad er god programmerinsskik og har det nogen betydning for hastigheder m.v. om jeg åbner/lukker på hver side?
Avatar billede tobocom Nybegynder
20. september 2004 - 19:09 #1
Min erfaring siger at du kun skal åbne databasen når du trække data og lukke databasen så hurtigt som muligt. Hvis det er muligt at behandle data mens den er lukket og kun åbne den når det er absolut nødvendigt.

Og ja det har enorm stor betydning med hastighed hvis databasen står åben hele processen igennem. Jeg lavede en chat sidste år bygget i en access database. Den første test var extrem sløv når man nåede op på omkring 10-15 brugere. Her åbnede jeg databasen, træk og behandlede data, og lukkede databasen. Jeg ændrede så det forløb til at åbne databasen, træk data, luk database, behandle data, åbne database lagre data, luk database.

Selv om det virker som en lang arbejdsgang betød det faktisk at jeg kunne presse chatten til 40 brugere før det kunne mærkes.

Så mit svar vil være:
Åben kun databasen nå det er nødvendigt og luk den så hurtigt som muligt.
Avatar billede michaelfp Nybegynder
20. september 2004 - 19:42 #2
Hej Tobocom,

Tak for råd.
Kan man i VBScript f.eks definere et array, som man kan referere til på flere sider? Jeg tænker f.eks på, at indlæse records fra en tabel ind i et array og så bygge alle dropdowns op, udfra array' et i stedet for at indlæse fra tabellen hver gang. Idet de data jeg anvender i dropdowns sjælden ændres/udvides må dette være hurtigere.

Hvis jeg definere et array som public in en .inc fil kan jeg så referere til det på alle de sider, som har filen included og f.eks nøjes med at indlæse records i array' et når sitet åbnes og hvis data ændres?
Avatar billede tobocom Nybegynder
20. september 2004 - 20:49 #3
Ja det kan du sagtens, men hvis der kan forekomme de mindste ændringer vil jeg nu altid foreslå brugen af database, bare man kun udlæser dem og lukker databasen hurtigst mulige. Jeg har selv 2 funktioner i en include jeg kalder aabenDB og lukDB hvilket gør tingende lidt lettere. Desuden har jeg alle mine SQL-sætninger i en includefil for sig, så jeg hurtigt kan finde frem til dem og rette dem til hvis det bliver nødvendigt, så længe jeg alså bruger access, hvis det er en MSSQL bruger jeg "stored procedure".

Anyway brugen af Arrays er let at arbejde med, du skal bare huske på at hvis du lægger dem i en include fil og indlæser dem selv nå du ikke bruger dem bruger de hukommelse til ingen verdens nytte.
Avatar billede tobocom Nybegynder
20. september 2004 - 20:50 #4
Du kan jo også bruge XML eller Recordset.
Avatar billede michaelfp Nybegynder
20. september 2004 - 21:04 #5
Det med globale variable driller mig!

I almindelig VB ville jeg skrive

Public Mitarray

og derefter kan jeg referere til denne variable og dens indhold overalt. Jeg har prøvet det samme i et VBscript, men får fejlen Type mismatch: Mitarray

gør jeg det forkert? (smid et svar - jeg takker for dine tips)
Avatar billede tobocom Nybegynder
20. september 2004 - 21:40 #6
Ja du kan bruge public og private i asp så skal du bruge .NET

Dim MitArray

Og Redim for at sætte størrelsen.

Takker
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