Я не очень разбираюсь в OleDB, и мне нужна информация о том, как создать файл MS Access 2007 как защищенный паролем. Это фрагмент кода, который использует User Id=admin; Password=
, но при попытке сохранить сообщение выдает ошибку: Cannot start your application. The workgroup information file is missing or opened exclusively by another user.
EDIT:
Теперь у меня ошибка: Cannot open the MS Office Access database engine workgroup information file
Я выяснил, что проблемы заключаются в команде SQL. Какую команду SQL я должен использовать? Эта команда создает проблему, и я не могу понять, почему. Я использовал аналогичный синтаксис по ссылке, предоставленной человеком в комментарии.
try
{
objOleDbConnection.Open();
objOleDbCommand.CommandText =
"ALTER USER " + storedAuth.UserName +
" PASSWORD [" + storedAuth.Password + "] []";
objOleDbCommand.ExecuteNonQuery();
}
Я мог бы использовать следующий код, но как насчет имени пользователя?
objOleDbCommand.CommandText = "ALTER DATABASE PASSWORD " + storedAuth.Password + "[]";
РЕДАКТИРОВО изменил код, который у меня сейчас:
private void sfdNewFile_FileOk(object sender, System.ComponentModel.CancelEventArgs e)
{
// Creating a ADOX object needed to create
// new MS Access file.
ADOX.Catalog createMSFile = new ADOX.Catalog();
createMSFile.Create("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
sfdNewFile.FileName);
Table nTable = new Table();
nTable.Name = "PersonData";
nTable.Columns.Append("DataID", DataTypeEnum.adInteger, 40);
nTable.Columns.Append("Type", DataTypeEnum.adVarWChar, 40);
nTable.Columns.Append("URL", DataTypeEnum.adVarWChar, 40);
nTable.Columns.Append("SoftwareName", DataTypeEnum.adVarWChar, 40);
nTable.Columns.Append("SerialCode", DataTypeEnum.adVarWChar, 40);
nTable.Columns.Append("UserName", DataTypeEnum.adVarWChar, 40);
nTable.Columns.Append("Password", DataTypeEnum.adVarWChar, 40);
createMSFile.Tables.Append(nTable);
// It is importnat to release COM object, in this very order
// otherwise we eill end up with an error.
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(nTable);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(createMSFile.Tables);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(createMSFile.ActiveConnection);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(createMSFile);
OleDbConnection objOleDbConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + sfdNewFile.FileName);
OleDbCommand objOleDbCommand = objOleDbConnection.CreateCommand();
try
{
objOleDbConnection.Open();
objOleDbCommand.CommandText = "ALTER DATABASE PASSWORD [" + storedAuth.Password + "] []";
objOleDbCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
// Displaying any errors that
// might have occured.
MessageBox.Show("Error opening the " +
"connection: " + ex.Message);
}
finally
{
objOleDbConnection.Close();
}
MessageBox.Show("File have been created.");
}
Надеюсь на несколько советов. Привет.