vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
DB Connection Pooling 
Autor: Poscht
Datum: 17.11.05 11:07

Hallo alle zusammen,

ich habe mir für ein Projekt eine kleine Klasse für den Zugriff auf die DB geschrieben.

Meine Frage dazu:
Ich würde gerne in der Methode getConnection ständig 5-10 offene Verbindungen zur Datenbank vorhalten, um die Abfragen zu beschleunigen.
Nur wird die Klasse ja immer mit Dim db as New ClsDBmySQL aufgerufen und damit komplett neu instanziert.
Wo liegt mein Denkfehler oder wie kann man das am besten lösen?

Hier ist die Klasse
Imports System
Imports System.Data
Imports MySql.Data.MySqlClient
 
' öffentliche Klasse, über die auf die Datenbank zugegriffen werden kann
Public Class clsDBmySQL
    ' erben von der Klasse Config, um an die Konfiguration aus der Regestry zu 
    ' kommen
    Inherits clsConfig
 
    ' private (Klassen)Variablen
    Dim sSQL As String = ""
    Dim lInsertID As Long = 0
    Dim lRows As Long = 0
 
    ' öffentliche Eigenschaft, über die die Aüsführung eines SQL Queries ohne
    ' Ergebniss ausgeführt werden kann
    Public WriteOnly Property ExecuteQuery() As String
        Set(ByVal Value As String)
            sSQL = Value
            If sSQL <> "" Then
                _ExecuteQuery(sSQL)
            End If
        End Set
    End Property
 
    ' öffentliche Eigenschaft, über die die Anzahl der vom letzten Query
    ' betroffenen Zeilen ausgelesen werden kann
    Public ReadOnly Property AffectedRows() As Long
        Get
            Return lRows
        End Get
    End Property
 
    ' öffentliche Eigenschaft, über die die letzte ID ausgelesen werden
    ' kann, die bei einem INSERT erzeugt wurde
    Public ReadOnly Property LastInsertID() As Long
        Get
            Return lInsertID
        End Get
    End Property
 
    ' Private Methode, mit der ein Query ohne Ergebniss ausgeführt werden kann
    Private Function _ExecuteQuery(ByRef sSQL As String)
        Dim cmdSQL As MySqlCommand
        Dim oConn As MySqlConnection
        Dim oRead As MySqlDataReader
 
        ' wir versuchen, den query auszuführen
        Try
            ' offenen verbindung holen
            oConn = getConnection()
 
            ' query ausführen
            cmdSQL = New MySqlCommand(sSQL, oConn)
            lRows = cmdSQL.ExecuteNonQuery()
 
            ' Insert id holen
            ' # todo, abfrage, ob es überhaupt ein INSERT query ist
            sSQL = "SELECT LAST_INSERT_ID() AS id"
            cmdSQL = New MySqlCommand(sSQL, oConn)
            oRead = cmdSQL.ExecuteReader()
 
            If oRead.Read() = True Then
                If oRead.Item("id") > 0 Then
                    lInsertID = oRead.Item("id")
                Else
                    lInsertID = 0
                End If
            End If
 
            oConn.Close()
        Catch ex As Exception
        End Try
    End Function
 
    ' diese private Funktion lädt die Konfiguration der Datenbank 
    ' und gibt diese als Connection-String zurück
    Private Function loadMySQLConfig()
        ' dieser zwischenschritt ist eigentlich unnötig
        ' erleichtert mir aber die übersichtlichkeit ;)
        Try
            Return "Database=" & sDbName & ";Data Source=" & sDbServerName & _
              ";User Id=" & sDbUserName & ";Password=" & sDbPasswort & ";"
        Catch ex As Exception
            Return ""
        End Try
    End Function
 
    ' diese öffentliche Function soll die Verbindung herstellen und im 
    ' Erfolgsfall zurückgeben
    ' #todo - richtige fehlerbehandlung
    Public Function getConnection() As MySqlConnection
        Dim sConn As String
        Dim oConn As MySqlConnection
 
        ' connection string holen
        sConn = loadMySQLConfig()
 
        ' erst mal sehen, ob wir überhaupt einen Connection String bekommen 
        ' haben
        If sConn <> "" Then
            Try
                ' versuchen, mit dem Connection String eine Verbindung 
                ' aufzubauen
                oConn = New MySqlConnection(sConn)
                oConn.Open()
                ' wenn alles geklappt hat, die neue offene verbindung 
                ' zurückgeben
                Return oConn
            Catch ex As Exception
                ' irgendwo ist ein fehler aufgetreten
                Return getConnection
            End Try
        Else
            ' wir haben keinen connection string erhalten
            Return getConnection
        End If
    End Function
 
End Class
Danke im voraus,
Poscht
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
DB Connection Pooling1.164Poscht17.11.05 11:07
Re: DB Connection Pooling717ModeratorFZelle17.11.05 11:57
Re: DB Connection Pooling818Poscht17.11.05 12:16
Re: DB Connection Pooling666ModeratorFZelle17.11.05 13:32
Re: DB Connection Pooling678Poscht17.11.05 13:44
Re: DB Connection Pooling694ModeratorFZelle17.11.05 18:16

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel