> 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