失去我的访问数据库密码紧凑,如何从VB重置



第一次在这里张贴海报…

VB。. NET程序压缩和修复我的数据库,但在过程中的某个地方取消设置数据库密码。没问题,只要通过VB重置就行了,对吧?嗯……不知道该如何着手这项任务。

所以我需要知道如何在不丢失密码的情况下压缩它,或者在丢失密码后如何重置密码。

尽我所能使代码在我的帖子中看起来体面,如果有更好的方法,请告诉我。

谢谢!

Dim strAccessDatabasePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "App_DataSquirrel.accdb"        
Dim LockedDbFileInfo As New System.IO.FileInfo(strAccessDatabasePath.Replace(".accdb", ".laccdb"))        
Dim TempFolder As String = System.AppDomain.CurrentDomain.BaseDirectory & "App_Datatemp"        
Dim TempDB As String = TempFolder & "temp.accdb"
If LockedDbFileInfo.Exists Then            
    MsgBox("Database is in use. Please make sure no users are in the database before performing maintenance.")        
Else            
    MsgBox("This program has detected no current database users and will proceed with database maintenance.")        
End If  
Try            
    Directory.CreateDirectory(TempFolder)        
Catch ex As Exception            
    MsgBox("There has been an error creating a temporary directory in your application directory. Please check credentials and try again.")        
End Try  
Dim time As DateTime = DateTime.Now        
Dim format As String = "MMM d yyyy HHmmss "        
Dim TempDateTime As String = time.ToString(format)         
'Copy DB to backup directory.        
Try            
    File.Copy(strAccessDatabasePath, txtDBbackupFolder.Text & "" & "DBbkup " & TempDateTime & ".accdb")        
Catch ex As Exception            
    MsgBox("There was an issue writing to the backup folder. Please check credentials and try again.")        
End Try    
'Copy DB to temp directory for maintenance.        
File.Copy(strAccessDatabasePath, TempFolder & "" & "temp.accdb")        
File.Delete(strAccessDatabasePath)         
Dim JROEng As Object         
JROEng = CreateObject("JRO.JetEngine")         
JROEng.CompactDatabase("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & TempDB & ";Jet OLEDB:Database Password=woodkitten70;Jet OLEDB:Engine Type=5", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
strAccessDatabasePath & ";Jet OLEDB:Engine Type=5")         
'connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|App_DataSquirrel.accdb;Jet OLEDB:Database Password=XXXXXXXXX" 
Try            
    Kill(TempFolder & "*.*")        
Catch ex As Exception            
    'MsgBox(ex.Message)        
End Try         
Directory.Delete(TempFolder)`

您可以参考Access互操作并使用紧凑的修复吗?"Microsoft.Office.Interop.Access.ApplicationClass。CompactRepair(String, String, [Boolean])作为Boolean"

Public Overridable Function CompactRepair(ByVal SourceFile As String, ByVal DestinationFile As String, Optional ByVal LogFile As Boolean = False) As Boolean

Microsoft.Office.Interop.Access.ApplicationClass成员

最新更新