Datenbankverbindung

20/07/2009 - 13:42 von Martin Jau | Report spam
Hallo,
wie kann ich am besten eine Datebankverbindung unter Dot.net global
bereitstellen.

Es gibt die Möglichkeit über ein Modul oder über die Klasse "MyApplication"

Module modGlobal
Public DB As New System.Data.SqlClient.SqlConnection
End Module

Namespace My
Partial Friend Class MyApplication

Private DatenbankVerbindung As New SqlConnection

Private Sub MyApplication_Shutdown(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Shutdown
DatenBankverbindung.Close()
End Sub

Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As
Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles
Me.Startup
'Verbindung zur Datenbank aufbauen
DatenBankverbindung.ConnectionString =
My.Settings.DatenbankVerbindung
DatenBankverbindung.Open()
End Sub
End Class
End Namespace

Bei der Lösung mit Klasse "MyApplication" ist es allerding unschön,
dass ich in jedem Formular und in jeder anderen Klassen eine Eigenschaft
DBVerbindung benötige!

Was würde es für Pobleme geben, wenn ich das Verbindungs-Objekt über die
Lösung "modGlobal" verwende?
(Mefachstart von der Anwendung, Multithreading, ...)

Gibt es hier bessere Lösungen?

mfg martin
 

Lesen sie die antworten

#1 Elmar Boye
20/07/2009 - 16:26 | Warnen spam
Hallo Martin,

"Martin Jau" schrieb ...
wie kann ich am besten eine Datebankverbindung unter Dot.net global bereitstellen.

Es gibt die Möglichkeit über ein Modul oder über die Klasse "MyApplication"



Verwende ein Singleton:
http://de.wikipedia.org/wiki/Single...smuster%29

Damit kannst Du die Erstellung - ggf. in Verbindung mit einer
Factory - verzögern. Und wenn nötig, auch eine weitere Instanz
erzeugen.

Was würde es für Pobleme geben, wenn ich das Verbindungs-Objekt über die Lösung "modGlobal" verwende?



Unabhàngig ob Modul, Singleton bekommst Du bei einer permanent
geöffneten Verbindung schnell Probleme, wenn mehrere Aktionen
parallel stattfinden sollen. Eine SqlConnection müsste dazu mit
MARS arbeiten: http://msdn.microsoft.com/de-de/lib...084cz.aspx

Nur da Fehler niemals auszuschliessen sind endet es damit nicht,
wenn eine Aktion fehlschlàgt und davon auszugehen ist,
das die Verbindung nicht mehr funktionstüchtig ist.

Gibt es hier bessere Lösungen?



Z. B. enthàlt die Enterprise Library einen Application Block
dazu, der nach àhnlichen wie genannten Muster gestrickt ist:
http://www.codeplex.com/entlib

Wenn Dir das wiederum zu groß und umfangreich ist, so kannst
Du dies zumindest als Grundlage herannehmen.

Denn nur mit einer Eigenschaft alleine wird man auf Dauer
nicht hinkommen.

Gruß Elmar

Ähnliche fragen