Avatar billede cuac Nybegynder
11. august 2004 - 14:10 Der er 8 kommentarer og
1 løsning

Beholde databaseforbindelse ved server.transfer kommando

Jeg har en login side hvor jeg tester om brugeren kan logge på en given database:


Sub LoginBtn_Click(Sender As Object, E As EventArgs)

    If Page.IsValid Then

      Dim strConnection as String = "user id= '" & txtbrugernavn.Text & "';"
        strConnection += "password= '" & txtpassword.Text & "';"
        strConnection += "database= '" & drpdatabasevalg.SelectedItem.Value & "';"
        strConnection += "server=FF07;"



        Dim myConn as New SqlConnection(strConnection)

          Session("Databasevalg")= drpdatabasevalg.SelectedItem.Value
         


        Try
            'Database forbindelse
            myConn.Open()

            Server.Transfer("Default.aspx")

        Catch
            Msg.Text = "Brugernavn eller password er ugyldigt, eller du har ikke de krævede rettigheder - prøv igen!"


        End Try

    End If

End Sub

Herefter kommer brugeren til default siden, og her vil jeg gerne kunne køre en stored procedure uden først at skulle åbne databaseforbindelsen igen, hvordan gør jeg lige det, jeg vil gerne at forbindelsen er åben under hele sessionen.


Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
lbldatabasevalg.text = Session("Databasevalg").ToString()


  If Not Page.IsPostBack Then

      'Her skal databseforbindelsen myConn være åben

        Dim strSQL As String = "SP_databaseoversigt"

        Dim objCommand As New SqlCommand(strSQL, myConn)


        dgDatabaseoversigt.DataSource = objCommand.ExecuteReader()
        dgDatabaseoversigt.DataBind()

        myConn.Close()

End if


End Sub
Avatar billede arne_v Ekspert
11. august 2004 - 15:41 #1
Du kan vel gemme connection i sessionen !?
Avatar billede guidmaster Nybegynder
11. august 2004 - 16:28 #2
Det er ikke specielt heldigt at åbne din connection før du rent faktisk skal bruge den. Hvis du eks. gemmer den på session som og session dør vil connectionen ikke blive lukket og derved vil du på et tidspunkt løbe tør for connections.
Åben altid dine connections lige før du rent faktisk skal bruge dem og luk dem så så snart du er færdig! Med den indbyggede connection pooling vil du få en meget bedre applikation ud af dette.
Avatar billede arne_v Ekspert
11. august 2004 - 17:27 #3
"hvis ... session dør" og Server.Transfer ??
Avatar billede guidmaster Nybegynder
11. august 2004 - 18:44 #4
Du ved da aldrig hvornår sessionen dør - applicationen kan jo genstarte hvornår det skal være (eks. der er for stort et ressource forbrug, forbindelsen tabes mm.)
Avatar billede cuac Nybegynder
12. august 2004 - 08:14 #5
Hvordan er det lige jeg gemmer connection string som session, er det bare

Session("dataconnection")= strConnection

??
Avatar billede arne_v Ekspert
12. august 2004 - 13:43 #6
ja
Avatar billede arne_v Ekspert
12. august 2004 - 13:50 #7
guidmaster>

Hvis applikationen genstartes vil jeg da håbe at Finalize/Dispose kaldes
og lukker den fysiske database connection - det er vel ligesom pointen med dem.

"forbindelsen tabes" og Server.Transfer ? Laver Server.Transfer noget andet end det
jeg tror den gør ? Jeg formoder da at det bare er lidt simple metode kald
uden nogen som helst form for netværks aktivitet !

[vi er helt enige om at connection ikke skal gemmes i session mellem browser
requests]
Avatar billede cuac Nybegynder
26. august 2004 - 11:25 #8
Arne V, opret lige et svar så er der point på vej.

Thanks
Avatar billede arne_v Ekspert
26. august 2004 - 11:30 #9
svar
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