When developing an application with visual basic, you may want to store data. So you create a database during runtime, for example with the following piece of code, as many websites show on various forums:
Dim strMDBPath As String = "C:\SomePath\MyTestDB.mdb"
Dim cat As New ADOX.Catalog()
cat.Create(Convert.ToString("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=") & strMDBPath)
cat = Nothing
Next you wish to protect your data, so only your application can open the database. You google again, and find the following solution:
Dim cn As OleDbConnection = New OleDbConnection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strMDBPath & ";Mode=Share Deny Read|Share Deny Write;" cn.Open() Dim cmdpw As OleDbCommand = New OleDbCommand cmdpw.Connection = cn cmdpw.CommandText = "ALTER DATABASE PASSWORD [MYNEWPASSWORD] null" cmdpw.ExecuteNonQuery() cn.Close()
Unfortunately, now you are stuck with an error you can not solve:
“You attempted to open a database that is already opened by user ‘Admin’ on machine ‘YOURPCNAME’. Try again when the database is available.”
Creating the database seems to keep the connection open and you cannot close it to execute the password change on an exclusive connection.
The answer and solution is simple: Set the password in the connection string in the first piece of code when creating the database! The attempt to ALTER DATABASE PASSWORD is no longer needed and you can forget about that…
So:
Dim strMDBPath As String = "C:\SomePath\MyTestDB.mdb"
Dim cat As New ADOX.Catalog()
cat.Create(Convert.ToString("Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=MYNEWPASSWORD;Data Source=") & strMDBPath)
cat = Nothing
Enjoy this free advice from My Brain!
When I connect my phone (Galaxy s5 mini, usb mode set to ‘Camera PTP’) to my Windows 10 laptop, the usb port constantly disconnects and reconnects rapidly and not a lot is happening. I can’t access the phone in device manager since it constantly refreshes.
Nice. The ever-developing world of IT… or, “how to create more work for each other”.
erialization is changing any object, array or variable into a simple string, so it can be easily transfered over a network or stored into a database. Plus the change back into the original of course. There are many options available, and your best choice is using XML or JSON.
My new profile photo:
Are you a consultant or a service provider? How many non-billable brain picking sessions did you sit through so far this year? Or, on the flip side, how many brains did you try to pick for free this year? I think we should start a National Do Not Brain Pick registry and I want to be on it.