> Hallo, erst einmal Danke für das viele Feedback! Na ja, bei 
> der "kleinen" Webseite handelt es sich immerhin um ein 
> komplettes Portal mit zig Datenbankzugriffen 
> (Mehrsprachigkeit etc.) und von daher ist ein gekapselter 
> Datenbankzugriff meiner Ansicht nach durchaus von Vorteil. 
> Ihr habt geschrieben, dass ich diese Kapselung als Property 
> definierten soll. Mit ist klar, wie ich Propertys definiere 
> usw., allerdings ist mir nicht ganz klar, was den genau der 
> Inhalt dieser Eigenschaft sein soll. Ich wäre sehr sehr 
> dankbar, wenn mir jemand ein Codebeispiel nennen könnte, denn 
> meine bisherige Realisierung als Funktion macht mich selbst 
> auch nicht besonders glücklich. :-)

Eigentlich ist mir nicht ganz klar, was der Inhalt Deiner Klasse sein
soll, da ADO.NET ja ein voll funktionsfähiges und flexibles
Datenabnkinterface ist.
Wenn es "nur" darum gehen, bestimmte Verfahren zu vereinheitlichen oder
zu vereinfachen, gibt es vielleicht effektivere und effizientere
Möglichkeiten. Vor allem, wenn Du die SQL-Statements im Code lässt, kann
ich keinen Sinn in Deiner DB-Klasse erkennen, weil ADO.NET dafür alle
Tools bereitstellt. Tatsächlich habe ich so eine Klasse für ASP/ADO und
jetzt festgestellt, dass einige meiner Funktionen in ADO.NET bereits
standardmäßig integriert sind.

Aus meiner Sicht macht es Sinn, eine DB-Klasse zu definieren, die
 - automatisch bei Bedarf die Connection erstellt und auch sofort wieder
freigibt, um das Connection-Pooling zu unterstützen
 - Datenbank-Standardfunktionen (INSERT, SELECT, UPDATE, DELETE,
EXECUTE) über ein einfaches, einheitliches Interface bereitstellt
 - Fehlerbehandlung vereinheitlicht
 - einfach in andere Projekte portiert werden kann

Ein Grundgerüst für eine solche Klasse wäre z. B.

Imports System.Data.OleDb

Public Class db

   ' global variables
   Private mConnection As OleDbConnection
   Private mCommand As OleDbCommand
   Private mTransaction As OleDbTransaction
   Private mDBErrors As OleDbErrorCollection

   ' properties
   ReadOnly Property Connection()
      Get
         Connection = mConnection
      End Get
   End Property

   ' methods für data manipulation
   Public Sub Insert(...)
      If mConnection.State = ConnectionState.Closed Then
mConnection.Open()
      ' code to execute INSERT statements
   End Sub

   Public Sub Delete(...)
      If mConnection.State = ConnectionState.Closed Then
mConnection.Open()
      ' code to execute DELETE statments
   End Sub

   Public Sub Update(...)
      If mConnection.State = ConnectionState.Closed Then
mConnection.Open()
      ' code to execute UPDATE statements
   End Sub

   Public Function Execute(...) As Object
      If mConnection.State = ConnectionState.Closed Then
mConnection.Open()
      ' code to execute views and procedures
   End Function

   ' constructor
   Sub New(Optional ByVal pConnectionString As String =
"...default_ConnectionString...")
      mConnection = New OleDbConnection(pConnectionString)
   End Sub

   ' destructor
   Protected Overrides Sub Finalize()
      Try
         mConnection.Close()
      Finally
         MyBase.Finalize()
      End Try
   End Sub

End Class

Wäre auch schön, wenn man hier so eine Klasse gemeinsam erstellen
könnte, oder?

Freundliche Grüße
Joachim van de Bruck


| [aspdedotnet] als archive@jab.org subscribed
| http://www.dotnetgerman.com/archiv/aspdedotnet/ = Listenarchiv
| Sie können sich unter folgender URL an- und abmelden:
| http://www.dotnetgerman.com/listen/aspDEdotnet.asp

Antwort per Email an