Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在compact上丢失Access DB密码,如何从VB重置?_Database_Vb.net_Ms Access - Fatal编程技术网

Database 在compact上丢失Access DB密码,如何从VB重置?

Database 在compact上丢失Access DB密码,如何从VB重置?,database,vb.net,ms-access,Database,Vb.net,Ms Access,第一次在这里张贴海报 我的VB.NET程序压缩并修复我的数据库,但在这个过程中的某个地方取消了数据库密码。没问题,只要用VB重新设置,对吗?嗯。。。我不知道该怎么做 因此,我需要知道如何在不丢失密码的情况下压缩它,或者在丢失密码后如何重置密码 在我的帖子中,我尽我所能让代码看起来像样,如果有更好的方法,请告诉我 谢谢 Dim strAccessDatabasePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "

第一次在这里张贴海报

我的VB.NET程序压缩并修复我的数据库,但在这个过程中的某个地方取消了数据库密码。没问题,只要用VB重新设置,对吗?嗯。。。我不知道该怎么做

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

在我的帖子中,我尽我所能让代码看起来像样,如果有更好的方法,请告诉我

谢谢

Dim strAccessDatabasePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "App_Data\Squirrel.accdb"        
Dim LockedDbFileInfo As New System.IO.FileInfo(strAccessDatabasePath.Replace(".accdb", ".laccdb"))        
Dim TempFolder As String = System.AppDomain.CurrentDomain.BaseDirectory & "App_Data\temp"        
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_Data\Squirrel.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(字符串,字符串,[Boolean])作为布尔值


Microsoft.Office.Interop.Access.ApplicationClass的成员无法回答这个问题,但是关于您的代码的两个注释-
Kill
是VB6,应该更新为:
对于每个foundFile,将其作为My.Computer.FileSystem.GetFiles中的字符串,并且您不应该发布您的DB密码(我已经编辑过了)就密码而言,它已经存在于野外(并且在代码中不止一个地方)。Access数据库密码首先只是一个安全剧场,对任何目的都毫无价值。也许契约帮了你一个忙…没关系,我明白了。我被困了一段时间,因为最后我从未关闭过那个类的实例,但一旦我进入那个轨道,我就没事了。谢谢
Public Overridable Function CompactRepair(ByVal SourceFile As String, ByVal DestinationFile As String, Optional ByVal LogFile As Boolean = False) As Boolean