Hallo Liste!
Um meine Problemstellung zu er�rtern, muss ich ein wenig ausholen.
Wenn ich in ASP eine Seite mit Datenbankzugriff programmiert habe, so habe
ich oben eine Datenbank - Connection eingebunden,
und sie unten, als letztes Element auf der Seite wieder geschlossen. So
hatten alle asp - Seiten, die per include in diese eine Datei eingebunden
wurden, Zugriff auf diese DatenbankConnection. Das funktioniert in ASP.NET
ja nicht mehr so. (Jedenfalls meinem Kenntnisstand nach). Da ich mich
weigere, die vorgefertigten Elemente mit Update-Commands, Delete-Commands
usw. zu verwenden, sondern maximale Kontrolle und Transparenz im Code haben
m�chte, ziehe ich eine zu Fu� - Variante vor.
Nun zum Problem mit der Realisierung. Ich habe eine Klasse erstellt, die die
�ffentliche Eigenschaft "dbConnectionString" hat, hier wird beim Start der
Anwendung der Connectionstring zur Datenbank reingeschrieben, so habe ich
Projektweiten Zugriff auf ihn.
Auch hat die Klasse folgende Funktion:
Public Shared Function Connection() As OleDb.OleDbConnection
Dim objConnection As New
OleDb.OleDbConnection(dbFunctions.dbConnectionString)
Connection = objConnection
End Function
(dbFunctions ist der Klassenname). Nach meinem Verst�ndnis sollte ich die
Connection jetzt Projektweit mit
"dbFunctions.Connection.Open" �ffnen und mit "dbFunctions.Connection.Close"
auch wieder schlie�en k�nnen.
Nur funktioniert das leider nicht, denn wenn ich folgenden Code verwende:
1 dbFunctions.Connection.Open()
2 Dim strSQL As String = "SELECT * FROM tblAuthors WHERE
AUTHOR_USERNAME = '" & txtUsername.Text & "' AND AUTHOR_PASSWORD = '" &
txtPassword.Text & "';"
3 Dim objCommand As New OleDb.OleDbCommand(strSQL,
dbFunctions.Connection)
4 'Get a datareader
5 Dim objDataReader As OleDb.OleDbDataReader
6 objDataReader =
objCommand.ExecuteReader(CommandBehavior.CloseConnection)
While objDataReader.Read()
Session("intAuthorID") = CInt(objDataReader("ID"))
Session("strUsername") = CStr(objDataReader("AUTHOR_USERNAME"))
End While
'Close the datareader/db connection
objDataReader.Close()
dbFunctions.Connection.Close()
sollte doch eigentlich am Anfang die Connection ge�ffnet werden, verf�gbar
sein, und am Ende wieder geschlossen werden.
Nur leider wird sie anscheinend nicht ge�ffnet, ich bekomme in Zeile 6 den
Fehler, dass die Connection ge�ffnet sein muss.
Da muss also irgendwo ein logischer Fehler meinerseits sein, alleine ich
finde ihn nicht. Ich w�re dankbar, wenn jemand eine L�sung f�r mein
spezifisches Problem h�tte oder eine Idee h�tte, den Datenbankzugriff in
EINER Klassenfunktion zu kapseln, um ihn m�glichst einfach realisierbar zu
machen. F�r das Schreiben von Daten funktioniert das n�mlich wunderbar
folgenderma�en:
Public Shared Sub SaveToDatabase(ByVal sqlString As String)
Dim objConnection As New
OleDb.OleDbConnection(dbFunctions.dbConnectionString)
Dim strSQL As String = sqlString
objConnection.Open()
Dim objCommand As New OleDb.OleDbCommand(strSQL, objConnection)
Dim objDataReader As OleDb.OleDbDataReader
objDataReader =
objCommand.ExecuteReader(CommandBehavior.CloseConnection)
objDataReader.Close()
objConnection.Close()
objConnection.Close()
End Sub
Ich muss also nur dbFunctions.SaveToDatabase("SQLSTRING") angeben und den
Rest macht die Klassenfunktion.
Vielen Dank f�r die (hoffentlich!) vielen Ideen,
Mit freundlichen Gr��en,
Richard Leinstein.
___________________________________
www.aestheticdesign.de
[EMAIL PROTECTED]
___________________________________
| [aspdedotnet] als [email protected] 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