Avatar billede websam Nybegynder
03. august 2005 - 12:10 Der er 17 kommentarer og
1 løsning

Database lukket ja el. nej ?

Hejsa,

Jeg bruger følgende til at skabe forbindelse til en sql server :

Public Shared Function SqlConnect() As SqlConnection
    Dim Conn As SqlConnection
    Dim Sql As String = "bla, bla, bla...;"
    Conn = New SqlConnection(Sql)
    Conn.Open()
    SqlConnect = Conn
End Function

Så skal jeg bare lige vide om jeg kan lukke forbindelsen ved at skrive :

DbClass.SqlConnect.Close (DbClass er navnet på min klasse)

Er det måden at lukke den på ?

/Websam
Avatar billede arne_v Ekspert
03. august 2005 - 12:17 #1
nej

brug:

Private Shared Conn As SqlConnection
Public Shared Function SqlConnect() As SqlConnection
    Dim Sql As String = "bla, bla, bla...;"
    Conn = New SqlConnection(Sql)
    Conn.Open()
    SqlConnect = Conn
End Function
Public Shared Sub SqlDisconnect()
    Conn.Close
End Sub

og

DbClass.Disconnect
Avatar billede arne_v Ekspert
03. august 2005 - 12:17 #2
jeg er iøvrigt ikke overbevist om at så meget Shared er optimalt !
Avatar billede websam Nybegynder
03. august 2005 - 12:19 #3
Så må det være DbClass.SqlDisconnect Ikke ?

Og hvorfor mener du ikke det med shared ?

/Websam
Avatar billede arne_v Ekspert
03. august 2005 - 12:22 #4
ups ja

du får samtidigheds problemer !
Avatar billede websam Nybegynder
03. august 2005 - 12:28 #5
Jeg går udfra at du taler om de Shared der er includeret i mine functioner og subs. Hvis jeg fjerner dem får jeg følgende fejl :

Reference to a non-shared member requires an object reference.

hvordan laver jeg så referencen til functionen ?

/Websam
Avatar billede arne_v Ekspert
03. august 2005 - 12:34 #6
Hvis du fjerner Shared så skal du bruge:

Dim db As DbClass = New DbClass

og bruge db.SqlConnect og db.SqlDisconnect
Avatar billede arne_v Ekspert
03. august 2005 - 12:35 #7
ellers skal du beholde:

Public Shared Function SqlConnect() As SqlConnection
    Dim Conn As SqlConnection
    Dim Sql As String = "bla, bla, bla...;"
    Conn = New SqlConnection(Sql)
    Conn.Open()
    SqlConnect = Conn
End Function

og så bruge:

Dim c As SqlConnection = DbClass.SqlConnect
' bruge c
c.Close
Avatar billede websam Nybegynder
03. august 2005 - 12:40 #8
Cool en sidste ting, hvad mener du med "samtidigheds problemer" ?

/Websam
Avatar billede websam Nybegynder
03. august 2005 - 12:43 #9
Og aller sidste ting hvordan tjekker jeg om min connection er åbnet eller lukket ?
Avatar billede arne_v Ekspert
03. august 2005 - 12:46 #10
Hvis du har en shared connection så kan du få problemer hvis 2 brugere forsøger at
bruge den samtidigt
Avatar billede arne_v Ekspert
03. august 2005 - 12:47 #11
Brug State property på connection
Avatar billede arne_v Ekspert
03. august 2005 - 12:47 #12
og et svar
Avatar billede websam Nybegynder
03. august 2005 - 12:48 #13
Ok så laver jeg det bare om det tager jo ikke så lang tid ?
Avatar billede websam Nybegynder
03. august 2005 - 12:52 #14
Sådan her :

DbClass.SqlConnect.State

/Websam
Avatar billede arne_v Ekspert
03. august 2005 - 12:57 #15
nej

Dim c As SqlConnection = DbClass.SqlConnect
' test på c.State
Avatar billede websam Nybegynder
03. august 2005 - 13:03 #16
ok.

Når jeg kalder DbClass.SqlClose udfra dette :

Public Shared Sub SqlClose()
    Conn.Close()
End Sub

får jeg denne fejl :

Object reference not set to an instance of an object
Avatar billede websam Nybegynder
03. august 2005 - 13:05 #17
sorry min fejl det kræver jo at forbindelsen har været åbnet :o)
Avatar billede websam Nybegynder
03. august 2005 - 13:42 #18
Tak for hjælpen ;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
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