onduidelijkheid over een code

Status
Niet open voor verdere reacties.

Bert van gelder

Gebruiker
Lid geworden
6 sep 2008
Berichten
7
Goedendag, ik wil een programma maken die connect via een database. Nu werd er mij verteld dat ik deze code in de module moest gebruiken, maar geen verdere uitleg :s

Code:
Sub QueryUitvoer(ByVal Query As String)

        Dim Qstr As String = Query
        Dim sqlcommand As New SqlCommand(Qstr, cn)
        If Not cn.State = ConnectionState.Open Then
            cn.Open()
            'sqlcommand.CommandTimeout=0
            Try
                sqlcommand.ExecuteNonQuery()
            Catch ex As SqlException
                MsgBox(ex.Message)
            Finally
                cn.Close()
            End Try
        Else
            Try
                sqlcommand.ExecuteNonQuery()
            Catch ex As SqlException
                MsgBox(ex.Message)
            Finally
                cn.Close()
            End Try
        End If

        'close de connectie op het allerlaatste moment
        'If Not cn.State = ConnectionState.Closed Then cn.Close()

    End Sub

Kan iemand mij vertellen wat dit precies doet ?

bvd,

Bert
 
Laatst bewerkt:
Code:
Sub QueryUitvoer(ByVal Query As String)   ´Geef een query string mee

        Dim Qstr As String = Query  ´Niet nodig, gebruik overal Query ipv Qstr
        Dim sqlcommand As New SqlCommand(Qstr, cn) ´ heb je al een globale cn ?
        If Not cn.State = ConnectionState.Open Then ´Als connectie niet open is
            cn.Open() ´Open de connectie
            'sqlcommand.CommandTimeout=0
            Try
                sqlcommand.ExecuteNonQuery() ´probeer de query uit te voeren
            Catch ex As SqlException
                MsgBox(ex.Message) ´Als het niet gelukt is laat het zien
            Finally
                cn.Close()
            End Try
        Else
            Try
                sqlcommand.ExecuteNonQuery() ´Connectie is open, voer query uit
            Catch ex As SqlException
                MsgBox(ex.Message) ´Zie hierboven
            Finally
                cn.Close() ´Sluit cn
            End Try
        End If

        'close de connectie op het allerlaatste moment
        'If Not cn.State = ConnectionState.Closed Then cn.Close() ´Sluit cn nog een keer?
End Sub
Code is wat warrig, kan zeker beter gemaakt worden.
Met Finally roep je de sluit functie altijd aan, hoeft niet nog een keer. Hieronder is hij
iets vereenvoudigd.

Code:
Sub QueryUitvoer(ByVal Query As String)   
        Dim sqlcommand As New SqlCommand(Query , cn) 
        
        Try
                If Not cn.State = ConnectionState.Open Then  cn.Open()
                sqlcommand.ExecuteNonQuery() 
        Catch ex As SqlException
                MsgBox(ex.Message)
         Finally
                cn.Close()
         End Try
End Sub
 
Laatst bewerkt:
oke, dank je ! Kan je me ook mischien vertellen wat deze code doet ? want ik snap t niet helemaal..

Iig bedankt voor je reactie.


groeten!
 
Code:
Sub QueryUitvoer(ByVal Query As String)   
        Dim sqlcommand As New SqlCommand(Query , cn) 
        
        Try
                If Not cn.State = ConnectionState.Open Then  cn.Open()
                sqlcommand.ExecuteNonQuery() 
        Catch ex As SqlException
                MsgBox(ex.Message)
         Finally
                cn.Close()
         End Try
End Sub

Query = query die uitgevoerd moet worden.
sqlcommand = new sqlcommand die uitgevoerd moet worden. Hier moeten zowel de query als de connectie meegegeven worden.
cn = connectie naar een database. (Deze heb je globaal ergens staan, hij wordt nml niet in de functie gedeclareerd.
cn.Open = opent de database
sqlcommand.ExecuteNonQuery() = uitvoeren van het sql commando op de database.
MsgBox(ex.Message) = messagebox die de fout laat zien.
cn.Close = Sluiten van de database.

Ik neem aan dat je bekend met try - catch methode.

Misschien moet je even Mr Google raadplegen, dit is nogal basis. Er staan zat voorbeeldje die je kan volgen op internet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan