ADO .net 2.0, gesicherte Access 2000 DB, Jet.OLEDB.4.0 Provider

24/10/2007 - 16:23 von Klaus | Report spam
Hallo zusammen,

ich habe kleines Problem und würde mich freuen, wenn mir jemand einen
hilfreichen Tip geben könnte.

Ich greife über den Jet OLE DB Provider auf eine Access DB zu, die gesichert
ist.

Verwende ich eine MDW, die kein Passwort auf dem angegebenen User
(appladmin) hat, funktioniert der Zugriff.

Verwende ich eine MDW, bei der der User appladmin ein Passwort hat, erhalte
ich eine Exception, dass der Benutzername / Passwort ungültig sei.

Mit MS Access 2003 verwende ich die MDW Datei und kann mit der Kombination
Benutzername/Passwort diese Datenbank öffnen und bearbeiten.

Nachfolgende Funktion funktioniert mit einer MDW, bei der der Benutzer ohne
Passwort angelegt ist, sofern die Zeile mit dem Passwort auskommentiert ist.
Wenn ich das Passwort reinnehme, klappt es nicht mehr.

Private Function CreateOLEDBbldr(ByVal sDs As String) As
OleDbConnectionStringBuilder

Dim bldr As New OleDbConnectionStringBuilder()

bldr.DataSource = sDs
bldr.Provider = "Microsoft.Jet.OLEDB.4.0"
bldr.Add("Jet OLEDB:Database Password", "password!")
bldr.Add("Jet OLEDB:System Database", "F:\access2k\mysystem.mdw")
bldr("User ID") = "appladmin"
bldr.Add("Jet OLEDB:Database Locking Mode", 1) ' Set up row-level locking.

Return bldr
End Function

Der Aufruf sieht dann so aus:

Private Sub readentries()
Dim cmd As OleDbCommand
Dim rdr As OleDbDataReader
Dim bldr As OleDbConnectionStringBuilder =
CreateOLEDBbldr("f:\access2k\Data\database.mdb")

Using cn As New OleDbConnection(bldr.ConnectionString)
cn.Open() ' < hier knallt's!
cmd = cn.CreateCommand()
cmd.CommandText = "SELECT * " & _
" FROM Table " & _
" WHERE (col1 = True) AND (col2 = False)"
rdr = cmd.ExecuteReader()
Do While rdr.Read
' irgendwas tun
Loop
rdr.Close()
End Using
End Sub

Vielen Dank für Eure Hilfe!

Klaus
 

Lesen sie die antworten

#1 Peter Götz
24/10/2007 - 17:25 | Warnen spam
Hallo Klaus,

Ich greife über den Jet OLE DB Provider auf eine
Access DB zu, die gesichert ist.



Gesichert über eine system.mdw (User ID + Password)
oder mit einem internen Datenbank-Kennwort?

Verwende ich eine MDW, die kein Passwort auf
dem angegebenen User (appladmin) hat,
funktioniert der Zugriff.

Verwende ich eine MDW, bei der der User
appladmin ein Passwort hat, erhalte
ich eine Exception, dass der
Benutzername / Passwort ungültig sei.



Was eben bedeutet, dass entweder der übergebene
Benutzername (User ID) oder das Benutzerpasswort
(Password) ungültig ist.

Das Benutzerpasswort (Password) ist was
anderes als das interne DB-Kennwort
(Jet OLEDB:Database Password).

Mit MS Access 2003 verwende ich die MDW
Datei und kann mit der Kombination
Benutzername/Passwort diese Datenbank
öffnen und bearbeiten.

Nachfolgende Funktion funktioniert mit einer
MDW, bei der der Benutzer ohne Passwort
angelegt ist, sofern die Zeile mit dem Passwort
auskommentiert ist.
Wenn ich das Passwort reinnehme, klappt es
nicht mehr.

Private Function CreateOLEDBbldr(ByVal sDs As String) As
OleDbConnectionStringBuilder

Dim bldr As New OleDbConnectionStringBuilder()

bldr.DataSource = sDs
bldr.Provider = "Microsoft.Jet.OLEDB.4.0"
bldr.Add("Jet OLEDB:Database Password", "password!")



Das "Jet OLEDB:Database Password" muss
übergeben werden, wenn die *.mdb mit einem
internen DB-Kennwort geschützt ist. Das hat nichts
mit dem Schutz via System.mdw zu tun.

bldr.Add("Jet OLEDB:System Database", "F:\access2k\mysystem.mdw")
bldr("User ID") = "appladmin"



Das sollte wohl heissen:

bldr.Add("User ID", "appladmin")


Und dann fehlt noch das Benutzerpasswort

bldr.Add("Password", "DeinBenutzerpasswort")


bldr.Add("Jet OLEDB:Database Locking Mode", 1)
' Set up row-level locking.

Return bldr
End Function



Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen