Avatar billede lindsten Nybegynder
15. maj 2002 - 10:28 Der er 7 kommentarer og
1 løsning

For hver session reservering af unikt ID

Til min internet-applikation har jeg en tilhørende database. I den har jeg tabellen 'Undersøgelse' hvis primærnøgle er UndersøgelseID.

Jeg henter dette ID  via Global.asa på følgende måde:

function Session_OnStart() {
Application.Lock();
Application("visitors") = Application("visitors")+1;
Application.UnLock();
conection = Server.CreateObject("ADODB.Connection");
connection.Open("eCom");       
maxUndID = "SELECT MAX(undersøgelseID) AS maxID FROM    undersøgelse ";
res = connection.execute(maxUndID);
nytUID  = res("maxID") + 1;
Session("UID") = nytUID;
}

Som det ses sættes det nye ID ind i en Session

Problemmet er bare at ved flere samtidig sessioner får de alle de samme ID

Hvad kan jeg gøre ?   
Avatar billede rou Nybegynder
15. maj 2002 - 10:34 #1
Bruger Session.SessionID ?
Avatar billede lindsten Nybegynder
15. maj 2002 - 10:52 #2
Jeg ved ikke om det passer, men er der ikke chance for at flere brugere i teorien så kan få det samme sessionID. Det mener jeg engang at have læst.
Avatar billede tmceu Praktikant
15. maj 2002 - 12:07 #3
SessionID er ikke garanteret unik, forstået på den måde at den ikke er unik på tværs af genstart af IIS.

Hvis du bruger SQL Server, kan du eks. tilføje et IDENTITY felt i din tabel og derefter bruge @@Identity til at få den seneste ID.

Lad os antage at du har tabellen MinTabel, med felterne IDField (Identity) og Tekst(varchar). Hvis du kører flg. statement vil du få returneret seneste ID.

INSERT INTO MinTabel(Tekst) VALUES('Test');SELECT @@IDENTITY
Avatar billede lindsten Nybegynder
15. maj 2002 - 12:25 #4
tmceu// jeg bruger en access database - og henter via sql sætningen
"SELECT MAX(undersøgelseID) AS maxID FROM  undersøgelse ";
Mit problem er at hvis alle lokker sig på samtidig så får alle det samme ID - ID'et skal jeg bruge senere til at Indsætte med i databasen.
Avatar billede tmceu Praktikant
15. maj 2002 - 12:38 #5
Så har du et problem, bl.a. fordi Access ikke understøtter transactions.

Du kunne lave en lille work-around, som er forholdsvis sikker. Hvis du bruger Sessions ID + et timestamp, bør den blive unik (Session.SessionID & now() som du gemmer i et tekstfelt).
Avatar billede lindsten Nybegynder
16. maj 2002 - 10:26 #6
Vil du forklare det lidt nærmere. Her er jeg på helt bar bund.
Ud over ASP-bruger jeg javascript.
Avatar billede tmceu Praktikant
16. maj 2002 - 11:18 #7
Session("UID") = Session.SessionID & now()

Dette vil give en værdi i stil med dette: 46590347016-05-2002 11:15:20

Hvis du i din tabel med undersøgelser opretter et tekstfelt som primær nøgle og indsætter værdien af Session("UID"), har du altså en unik nøgle.
Avatar billede lindsten Nybegynder
16. maj 2002 - 12:10 #8
Jeg har endnu ikke afprøvet. Ved derfor ikke om jeg kan implementere løsningen men giver alligvel point med det samme.
Tak for hjælpen
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