Per Code eine Access Datenbank anbinden

Lünne

Grünschnabel
Hallo Leute,

ich bin umgestiegen von VB6 auf VB Net. Jetzt möchte ich per Code eine Access Datenbank ansprechen. Wer kann mir einen Code oder ein Beispiel senden, woraus ich ersehen kann wie dieses funktioniert.

Ich wäre für Eure Hilfe sehr DANKBAR.

Gruß

Dirk
 
Hi,
Code:
Imports System.Data
Imports System.Data.OleDb

' ...

Dim conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + DateinameDerDatenbank
conn.Open()

Dim dataset As DataSet = New DataSet()
Dim cmdAbfrage As OleDbDataAdapter = New OleDbDataAdapter("select * from TabellenName", conn)
cmdAbfrage.Fill(dataset, "TabellenName")

'Weitere Verarbeitung der Daten geht über das DataSet. Beispiel:
Console.WriteLine(dataset.Tables("TabellenName").Rows(0).Item("FeldName").ToString())

cmdAbfrage.Dispose()
conn.Close()
Natürlich ist ADO.net wesentlich umfangreicher, aber eine komplette Behandlung des Themas würde das Forum sprengen.
Stell stattdessen lieber erst einmal deine Frage spezifischer. ;)

Grüße, Dario
 
Hallo Dario,

danke für Deine Antwort. Ich möchte gerne die Datenbank so ansprechen wie ich es in
VB6 getan habe. Nur jetzt mit den VB Net Code.

Als Beispiel :

Option Explicit
Private DB As Database
Private RS As Recordset

Private Sub Form_Load()
Set DB = OpenDatabase(App.Path & "\Datenbank.mdb")
Set RS = DB.OpenRecordset("select * from Test", dbOpenDynaset)
RS.MoveLast
RS.MoveFirst
Text1.Caption=RS(1) ' zb. Vorname
Text2.Caption=RS(2) ' zb. Nachname
End Sub

So habe ich es mir vorgestellt, nur mit dem VB Net Code. Wie setzte ich den SET DB und den SET RS um ?
Woher weiss das Programm, wo sich die Datenbank befindet wenn ich es auf einem anderen Rechner installiere ( App.Path )

Ich hoffe du weißt jetzt was ich meine ?

Für eine Antwort wäre ich dir sehr DANKBAR

Gruß

Dirk
 
Ich möchte gerne die Datenbank so ansprechen wie ich es in
VB6 getan habe. Nur jetzt mit den VB Net Code.
Das wird vermutlich schwierig (oder anders gesagt: falls es einfach möglich sein sollte, dann macht es keinen Sinn). VB 6.0 hatte sich für die Datenbankanbindung immer mit den ADO- oder sogar DAO-Komponenten zufrieden gegeben. Mit .net wurde ADO erweitert und sieht jetzt dementsprechend anders aus.
Wo man auf Grundlage von ADO (bis Version 2.7 glaube ich) noch mit einzelnen Recordsets herumjonglierte, kann man jetzt komplette DataSets erstellen, wie ich schon ansatzweise gezeigt hatte. Mit DataSets lässt sich wesentlich mehr machen, als mit einem einfachen Recordset, das ja nur eine Schnittstelle zum Ergebnis einer Abfrage ist. Ein DataSet kann mehrere Tabellen aufnehmen und sogar Relationen zwischen ihnen aufstellen.

Wie du rausbekommst, wo sich die Datenbankdatei befindet, wenn du vom relativen Anwendungsverzeichnis ausgehst, stellt auch kein größeres Problem dar. Anstelle des alten "App.Path" bedient man sich heute aber eben anderen Mitteln. In diesem konkreten Fall ermittelt man einfach über Reflection den Dateinamen der gerade ausgeführten Anwendung:
Code:
System.Reflection.Assembly.GetExecutingAssembly().Location

Die beiden von dir geposteten Zeilen waren in bisherigen VB-Versionen nur notwendig, wenn man Objektvariablen eine Instanz zuweisen wollte. Das hat sich in der Sprachsyntax nun aber komplett geändert und muss nicht mehr gemacht werden, es wird sogar vom Compiler "wegoptimiert". Stattdessen kann man einer deklarierten Objektvariable jetzt auch ohne das Set-Schlüsselwort eine Instanz zuweisen:
Code:
Dim conn As OleDbConnection
conn = New OleDbConnection(connectionString)

Ich habe aber das Gefühl, dass du nur noch nicht so ganz mit den neuen Klassen des .net Frameworks zurechtkommst und dich da noch etwas verloren fühlst. Das gibt sich mit der Zeit. :)

Grüße, Dario
 
Wenn du vorher mit VB6 und ADO gearbeitet hast, dann kann ich dir nur empfehlen folgendes mal anzuschauen:


Klick mich

Dann wirst du auch sehen, dass ADO.NET doch recht viele Vorteile gegenüber ADO hat und es wenig Sinn macht hier noch auf ältere Technologien zu setzen.
 
Zurück