Avatar billede ebe Praktikant
19. november 2002 - 15:28 Der er 12 kommentarer og
1 løsning

Hvordan løser man flerbrugerproblematikken med Asp?

Jeg har en web-shop database hvor både kunder, salgsmedarbejdere og leverandørene bruger de samme tabeller fra en Access database samtidtigt. Hvordan sikrer jeg, at der ikke opstår flerbrugerproblemer? Kan jeg lave en databasebroker og en singleton? Kan jeg lave en global variabel? Asp er jo ikke objektorienteret!? Hvordan løses dette problem i den virkelige verden?

Hvis du har et kodeeksempel, ville det være fint.
Avatar billede burningice Nybegynder
19. november 2002 - 16:39 #1
nu kan access jo godt håndtere flere connections af gangen, så det er ikke noget problem, og skulle det alligevel gå hen og blive det så burde du måske overveje at skifte til f.eks. mySQL eller MS SQL
Avatar billede burningice Nybegynder
19. november 2002 - 16:43 #2
Og i forbindelse med en hjemmeside er det også begrænset der er bruger databasen af gangen. Den er jo kun åben i de par millisekunder hvor siden eksekveres på serveren, så med mindre du har flere tusind visninger i timen, er chancen for at to skriver til samme tabel samtidig i praksis ikke eksisterende.
Avatar billede ebe Praktikant
19. november 2002 - 18:26 #3
cyberfessor>> Du har ret i, at der i praksis kun vil opstå problemer hvis der er mange der er på. Men det er en hovedopgave til datamatiker, og jeg skal diskutere problematikken til afsluttende eksamen næste tirsdag. Og vi har IKKE haft Asp undervejs. Derfor søger jeg lidt gode ideer her.
Avatar billede soes Nybegynder
19. november 2002 - 19:53 #4
Naar du afvikler din Sql mod databasen kan du oprette en transsaktion, jeg ved ikke om det kan afhjaelpe problemet.

Conn.BeginTrans
Conn.Execute(Sql)

If Conn.Errors.Count <> 0 THEN
Conn.CommitTrans
Else
Conn.RollBackTrans
End If
Avatar billede ebe Praktikant
20. november 2002 - 08:18 #5
soes>>det var hidtil det bedste svar. jeg har altid været i tvivl hvornår en transaktion egentligt kommittes, når man udfører sql med asp. Kan man programere en broker, som kun tillader en bruger ad gangen at komme i databasen? Så man slipper for roll-back? (husk lige også at lægge et svar :-))
har du flere gode ideer?
Avatar billede ebe Praktikant
20. november 2002 - 08:19 #6
ps.: skulle der ikke stå if conn.errors.count = 0 ?
Avatar billede capaj Nybegynder
20. november 2002 - 14:06 #7
Vil bare lige nævne at access ikke understøtter transactions!

/capaj
Avatar billede ebe Praktikant
20. november 2002 - 16:43 #8
capaj>> systemet skal i sidste ende køre under mySQL. Understøttes transactions der? Har du gode ideer til hvordan man ellers kan løse problemerne?
Avatar billede ebe Praktikant
21. november 2002 - 19:39 #9
hvis der ikke bliver lagt svar her, lukker jeg spørgsmålet...
Avatar billede tsunami Nybegynder
21. november 2002 - 20:02 #10
Undskyld mig men er der ikke nogen her der har tænkt på Aplication.Lock og Aplication.Unlock

Ret smart for man kan jo ikke låse aplication når den er låst i forvejen så man kan jo i teorien bruge den til at låse så der ikke er andre der ændre oplysninger i databasen på samme tid... bare husk at åbne den igen... :o)
Avatar billede tsunami Nybegynder
21. november 2002 - 20:11 #11
Virker det ikke?
Avatar billede ebe Praktikant
21. november 2002 - 20:21 #12
Jeg ved ikke så meget om det, så du må rette mig hvis jeg har forstået det her forkert. Applikationsvariabler er synlige for alle, dvs. at variablerne kan bruges af alle .asp sider. Det er disse variabler som kan låses, så de ikke kan forandres af alle, indtil de er låst op igen? Kan de stadig ses af alle når de er låste?

Kan jeg så f.eks. ikke bare have en variabel "adgang ledig" som jeg sætter til false når jeg går ind i databasen, og true når jeg går ud igen?
Avatar billede tsunami Nybegynder
04. december 2002 - 20:25 #13
Aplications variablen kan ikke låses når den allerede er låst så derfor kan det samme script ikke læse de samme ting på samme tid men andre sider kan godt hvis altså ikke du også låser aplication objectet... men hvis det kun er en side der ændre noget i en database eller variable eller andet kan man godt bruge at låse aplications variablen :o)
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