Hallo Community!
Ich ändere das Kennwort einer AccessDB (2007) mit folgenden Code:
Spoiler anzeigen
In Zeile #15 frickle ich die Passwörter über einen String ein (möchte ich natürlich vermeiden)...
In Zeile #16 versuche ich die Passwörter über die Parametersauflistung des OleDbCommand-Objektes zu übergeben...
Mit der Version (Zeile #15) funktioniert das tadellos aber mit der Parameter-Übergabe fliegt immer wieder folgende OleDbException-Exception in Zeile #26
obwohl bei den Testausgaben die Parameter nachweislich richtig übergeben wurden.
Bei anderen Parameterübergaben hat das mit folgender Überschreibung
bei den Commands immer funktioniert...
Woran kann das liegen - ich glaube, dass die Parameter als String übergeben werden und unter Gänsefüßchen gestellt sind...
Ich ändere das Kennwort einer AccessDB (2007) mit folgenden Code:
VB.NET-Quellcode
- ''' <summary>
- ''' AccessKennwort ändern:
- ''' Ohne Kennwort: ganz einfach mit 'NULL' definieren !
- ''' </summary>
- Private Shared Function ChangeAccessPassWord(pwNew As String, pwOld As String) As Boolean
- If pwNew = pwOld Then Return True
- Dim bld As New OleDbConnectionStringBuilder(sysDataBaseConnString)
- If Not bld.ContainsKey("Provider") Then Return False
- If Not bld.ContainsKey("Data Source") Then Return False
- If bld.ContainsKey("Jet OLEDB:Database Password") Then bld.Remove("Jet OLEDB:Database Password")
- bld.Add("Jet OLEDB:Database Password", pwOld)
- If bld.ContainsKey("Mode") Then bld.Remove("Mode")
- bld.Add("Mode", 12)
- Using con = New OleDbConnection(bld.ConnectionString)
- 'Dim sql As String = "ALTER Database Password " & pwNew & " " & pwOld & ";" 'mit dieser Übergabe funktioniert das!
- Dim sql As String = "ALTER Database Password ? ?;" 'mit Parameterübergabe gibt es eine Exception?
- Using cmd = New OleDbCommand(sql, con)
- cmd.Parameters.Add(New OleDbParameter("@New", pwNew))
- cmd.Parameters.Add(New OleDbParameter("@Old", pwOld))
- 'Testausgabe
- Console.WriteLine(cmd.Parameters(0).Value.ToString)
- Console.WriteLine(cmd.Parameters(1).Value.ToString)
- '
- Try
- con.Open()
- cmd.ExecuteNonQuery()
- Return True
- Catch ex As OleDbException
- If ex.ErrorCode = -2147217843 Then Return False 'Kein zulässiges Kennwort
- If ex.ErrorCode = -2147467259 Then Return False 'Kennwort erwartet
- Return False
- End Try
- End Using
- End Using
- End Function
In Zeile #16 versuche ich die Passwörter über die Parametersauflistung des OleDbCommand-Objektes zu übergeben...
Mit der Version (Zeile #15) funktioniert das tadellos aber mit der Parameter-Übergabe fliegt immer wieder folgende OleDbException-Exception in Zeile #26
ex.ErrorCode = -2147467259 'Ungültige SQL-Syntax - Kennwort erwartet'
obwohl bei den Testausgaben die Parameter nachweislich richtig übergeben wurden.
Bei anderen Parameterübergaben hat das mit folgender Überschreibung
cmd.Parameters.Add(New OleDbParameter("@X", ParamX))
bei den Commands immer funktioniert...
Woran kann das liegen - ich glaube, dass die Parameter als String übergeben werden und unter Gänsefüßchen gestellt sind...
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „VB1963“ ()