0
這裏的第一次海報...失去我的Access數據庫密碼在緊湊,如何從VB重置?
我的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)`
不禁有兩個關於你的代碼的問題 - `Kill`是VB6,應該更新爲:`For My FoundFile As String in My.Computer.FileSystem.GetFiles`,你不應該發佈你的數據庫密碼(我已經編輯過它) – 2011-08-17 15:58:40
至於密碼去,它已經在野外(並且它在代碼中的多個地方)。它應該改變。 – BIBD 2011-08-17 17:36:41