Klassen-Übergabe v. Variablen

Dusty00

Mitglied
Hy Leute!

Ich spiele mich gerade ein wenig mit VB.NET und möchte eine Datenbankanbindung mittels einer Klasse realisieren. Ich hänge nur leider bei der Variablenübergabe. Ich habe mal folgendes ausprobiert:

Hier der Text aus der Klasse:

Code:
Public Class ConnectionClass

    Private conn As ADODB.Connection
    Private datenbank As String
    Public SQL as String
    Public rs As ADODB.Recordset


    Public Sub New()

        conn = New ADODB.Connection
        datenbank = Application.StartupPath & "\diskontdb.mdb"
        conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & datenbank)

        rs = New ADODB.Recordset

        rs.Open(SQL, conn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockPessimistic)


    End Sub
End Class

Hier der Text aus der Hauptform:

Code:
Public Class KundenAnlage

    Inherits System.Windows.Forms.Form


    Private dbconnect As ConnectionClass


Private Sub KundenAnlegen()

        dbconnect = New ConnectionClass

        dbconnect.SQL = "Select * from Kunden"

        txtNachname.Text = dbconnect.rs.Fields("Nachname").Value


 End Sub


End Class

Das ganze wird mittels eines Button_Click Ereignisses aufgerufen! Ich bekomme jedesmal die Fehlermeldung, dass kein Befehlstext übergeben wurde bzw. SQL=Nothing obwohl ja dbconnect.SQL = "Select * from Kunden" ist!

Was mache ich falsch?

mfg

dust
 

Kai_Jack

Erfahrenes Mitglied
Hallo Dusty,

hast du denn schon etwas in der Datenbank drin, weil du sagst

Code:
SELET  * FROM KUNDEN

Wo ist deine Übergabe an die Datenbank ?



Gruss an alle Masters of the Compuserve :)
 

Dusty00

Mitglied
Ja in der Datenbank ist schon was drin! Das ist jetzt nur ein Test, ich möchte einfach nur das SQL Statement an die connectionclass übergeben und den Kundennachnamen auslesen.
 

Norbert Eder

Erfahrenes Mitglied
Ist auch ganz klar, warum das nicht funktioniert:

Du hast den Verbindungsaufbau bzw. die Abfrage im Konstruktor deiner Klasse ConnectionClass. Der wird natürlich aufgerufen BEVOR du die Eigenschaft SQL setzt. Daher ist SQL natürlich Nothing.

An deiner Stelle würde ich das nicht in den Konstruktor, sondern in eine eigene Methode auslagern.

Als Verbesserungsvorschlag:
Eventuell noch 2 Methoden Open und Close. Diese öffnen und schließen die Verbindung zur Datenbank. In deinem Fall würde die Verbindung jedes Mal neu geöffnet werden, wenn du die Abfrage mehrfach hintereinander abfragst.

Hinweis:
Zudem befindet sich diese Post im falschen Forum. Hier gibt es .NET Datenverwaltung.
 
Zuletzt bearbeitet: