Avatar billede jobless Nybegynder
18. januar 2006 - 13:24 Der er 12 kommentarer og
1 løsning

Låsning af DB

Hej.

Jeg har en access database, som ofte bliver låst af min asp.net applikation.

Hvordan undgår jeg dette ?

Koden hvor jeg åbner db er følgende:
    Function FindValue(ByVal id As Integer, ByVal strField As String, ByVal strTable As String) As String
        Dim objConnection As OleDbConnection
        Dim objCommand As OleDbCommand
        Dim objDataReader As OleDbDataReader
        Dim strSQL As String
        objConnection = New OleDbConnection(ConfigurationSettings.AppSettings("connectionString") & Server.MapPath("./db/data.mdb"))
        objConnection.Open()
        strSQL = "SELECT " & strField & " FROM " & strTable & " where ID=" & id
        objCommand = New OleDbCommand(strSQL, objConnection)
        objDataReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection)
        objDataReader.Read()
        Return objDataReader.GetString(0).ToString()
        objConnection = Nothing
        objDataReader.Close()
        objDataReader = Nothing
    End Function
Avatar billede dr_chaos Nybegynder
18. januar 2006 - 13:43 #1
hvordan mener du med låst er det når du forsøger at åbne den mens du arbejder med siden ?
Avatar billede jobless Nybegynder
18. januar 2006 - 13:47 #2
hvis jeg har hentet siden i en browser, og mens denne er åben, vil jeg rette posten i db, så er denne låst (alm. recordlock i en db)
Avatar billede dr_chaos Nybegynder
18. januar 2006 - 13:52 #3
ulempen med access er at du kun kan have adgang til den et sted fra.
Det vil sige at hvis du åbner den i access programmet kan du ikke tilføje ting i databasen fra nettet af.
Avatar billede jobless Nybegynder
18. januar 2006 - 14:12 #4
det er ikke korrekt !

Databasen kan sagtens tilgås fra flere steder, så længe man ikke åbner den i eksklusiv-tilstand.

Mit eneste problem med dette er, at når jeg anvender ovenstående låses posten af og til, også selvom jeg lukker browseren.

Eneste måde at kunne ændre i db er, enten at vente, eller genstarte iis'en...
Avatar billede burningice Nybegynder
18. januar 2006 - 14:48 #5
jobless>> har du sørget for at din Network Service-bruger har lov at oprette filer i mappen hvor access ligger i?

For at databasen nemlig ikke skal låses, skal der oprettes en lck fil, og hvis dette ikke kan lade sig gøre, så har vi problemet med at der kun er en bruger af gangen der har adgang til databasen.
Avatar billede jobless Nybegynder
18. januar 2006 - 14:52 #6
ja, ldb-filen bliver fint oprettet, og flere kan godt have adgang samtidigt.

Problemet er at posten bliver låst, indtil jeg genstarter servicen...
Avatar billede mikkel_sommer Nybegynder
18. januar 2006 - 16:11 #7
Jeg ved ikke om jeg har forstået dit problem rigtigt og har heller ikke den store erfaring med access men kunne with(nolock) være en mulighed...
Avatar billede burningice Nybegynder
18. januar 2006 - 17:38 #8
ah... efter at have nærlæst din kode lidt bedre kan jeg da se at du returner for tidligt...

Du skal huske på, at kode efter din return-statemenet IKKE bliver udført, altså bliver din reader ikke lukket.
Avatar billede burningice Nybegynder
18. januar 2006 - 17:38 #9
du skal huske at lukke din reader der hvor du modtager den
Avatar billede jobless Nybegynder
19. januar 2006 - 08:38 #10
Skal det forstås sådan, at jeg skal lægge indholdet af mit db-felt i en streng, lukke readeren, og returnere strengen ?
Avatar billede dr_chaos Nybegynder
19. januar 2006 - 09:44 #11
ja
Avatar billede jobless Nybegynder
13. marts 2006 - 10:04 #12
burningice -> lægger du lige et svar?
Avatar billede burningice Nybegynder
29. marts 2006 - 19:31 #13
...
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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