| |

ADO.NET / DatenbankenDB 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 KlasseImports 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 |  |
 | 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 |
  |
|
Neu! sevCommand 4.0 
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
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
|
|