Ошибка при открытии соединения с файлом MS Access 2007: не удается открыть файл информации о рабочей группе ядра базы данных MS Office Access.

Cannot open the MS Office Access database engine workgroup information file - Когда у меня есть опубликованный код.

Что я пытаюсь сделать в своем коде, так это создать файл MS Access 2007, а затем установить для него имя пользователя и пароль из моей программы. Что я здесь делаю неправильно?

Здесь возникает ошибка: objOleDbConnection.Open();

РЕДАКТИРОВАТЬ: я внес некоторые изменения, кажется, что он открывает соединение, но команда неверна.

Теперь проблема здесь:

        objOleDbCommand.CommandText = 
            "ALTER USER " + storedAuth.UserName + 
            " PASSWORD [" + storedAuth.Password + "] []";

Весь код:

    // Creating an object allowing me connecting to the database.
    OleDbConnection objOleDbConnection = new OleDbConnection();
    objOleDbConnection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
            "Data Source=" + sfdNewFile.FileName + ";Persist Security Info=False";
    // Creating command object.
    OleDbCommand objOleDbCommand = new OleDbCommand();
    objOleDbCommand.Connection = objOleDbConnection;

    try
    {
        objOleDbConnection.Open();
        objOleDbCommand.CommandText = "ALTER USER " + 
                    storedAuth.UserName + " PASSWORD [" + 
                    storedAuth.Password + "] []";
        objOleDbCommand.ExecuteNonQuery();
    }
    catch (Exception ex)
    {
        // Displaying any errors that 
        // might have occured.
        MessageBox.Show("Error: " + ex.Message);
    }
    finally
    {
        objOleDbConnection.Close();
    }

person HelpNeeder    schedule 25.11.2011    source источник
comment
Это файл MDB или ACCDB? Вы упомянули, что это файл Access 2007, но я хочу быть абсолютно ясным, поскольку Файлы ACCDB не имеют безопасности на уровне пользователя.   -  person Cheran Shunmugavel    schedule 25.11.2011
comment
@Cheran Shunmugavel: Он есть в MDB? Я использую ACCDB.   -  person HelpNeeder    schedule 25.11.2011
comment
да. Убедитесь, что вы не путаете безопасность на уровне пользователя (которая доступна только с MDB) с простым паролем базы данных (который доступен как с MDB, так и с ACCDB). Если вы просто хотите защитить базу данных паролем, используйте ALTER DATABASE PASSWORD.   -  person Cheran Shunmugavel    schedule 25.11.2011
comment
@Cheran Shunmugavel: я хочу иметь имя пользователя и пароль. Не могли бы вы указать некоторые статьи, на которые я мог бы сослаться? Я гуглил, но не нашел ничего, что подсказывало бы мне, как это сделать.   -  person HelpNeeder    schedule 25.11.2011
comment
О пользователе уровень безопасности   -  person Cheran Shunmugavel    schedule 25.11.2011


Ответы (3)


Чтобы изменить пароль доступа к БД, вы должны открыть его в монопольном режиме. Попробуйте добавить это в строку подключения ;Exclusive=1.

createMSFile.Create("Provider=Microsoft.ACE.OLEDB.12.0;Exclusive=1;Data Source=" +
        sfdNewFile.FileName);
person Pankaj Upadhyay    schedule 25.11.2011
comment
Если я добавлю это, я получаю сообщение об ошибке: Не удалось найти устанавливаемый ISAM. - person HelpNeeder; 25.11.2011
comment
PS строка у вас там есть строка, которая создает файл, и это нормально. У меня проблема с другой строкой кода. Посмотри мой ОП. Я допустил ошибку ранее, опубликовав строку, о которой вы говорите, но я исправил ее. - person HelpNeeder; 25.11.2011
comment
okk .... затем удалите строку Exclusive сверху и вставьте OleDbConnection objOleDbConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Exclusive=1" + "Data Source=" + sfdNewFile.FileName); ... и посмотрите, работает ли это - person Pankaj Upadhyay; 25.11.2011
comment
Да, я понял это и использовал эксклюзивную часть там, где она должна быть. Вот где у меня есть проблема. - person HelpNeeder; 25.11.2011

Ну, ошибка, которую вы получаете, предполагает, что кто-то еще держит файл открытым, что предотвращает смену пароля...

person zmbq    schedule 25.11.2011
comment
Но где? Я, хотя я закрываю все, не так ли? - person HelpNeeder; 25.11.2011
comment
Хорошо, кажется, я исправил эту проблему. У меня сейчас другой. - person HelpNeeder; 25.11.2011

HelpNeeder, я думаю, что проблемы, с которыми вы сталкиваетесь, должны быть сначала решены в вашем другом вопросе: Ошибка говорит мне, что я не закрыл соединение, но не так ли?

Спасибо!

person Pavel Donchev    schedule 25.11.2011
comment
Да и нет. Проблема здесь в том, что ACCDB не позволяет мне использовать имя пользователя и пароль для аутентификации. - person HelpNeeder; 25.11.2011