varuncodee Ответов: 1

Разработка приложения windows и получение этой ошибки "не удалось сохранить; в настоящее время заблокирован другим пользователем. "


Разработка приложения для windows с использованием языка C sharp, а для бэк-энда я использую MS Access. После выполнения я получаю эту ошибку.
"Could not save; currently locked by another user. "


using (OleDbConnection con = new OleDbConnection(ConfigurationManager.AppSettings["connection"]))
                   {
                       con.Open();
                       OleDbCommand cmd = new OleDbCommand("UPDATE REPORTLkgUkg set StudentPhoto=?   where RegID=? and Standard=? ", con);

                       MemoryStream ms = new MemoryStream();
                       pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
                       byte[] photo_aray = new byte[ms.Length];
                       ms.Position = 0;
                       ms.Read(photo_aray, 0, photo_aray.Length);


                       cmd.Parameters.Add(new OleDbParameter("@StudentPhoto", (Object)photo_aray));

                       cmd.Parameters.Add(new OleDbParameter("@RegID", txtRegId.Text));
                       cmd.Parameters.Add(new OleDbParameter("@Standard", cmbStd.Text));
                       cmd.ExecuteReader();

                       cmd.ExecuteNonQuery();
                       con.Close();

                   }


Что я уже пробовал:

Я попытался закрыть файл access и запустить его снова. Не знаю, что делать.

1 Ответов

Рейтинг:
6

OriginalGriff

Посмотрите на свой код:

cmd.ExecuteReader();

cmd.ExecuteNonQuery();
Поскольку вы пытаетесь выполнить обновление с помощью ExecuteReader, вы открываете OleDbDataReader в соединении, которое затем отбрасываете. Когда вы пытаетесь затем выполнить тот же код снова через ExecuteNonQuery, движок проверяет соединение, обнаруживает, что открыт DataReader, и отказывается выполнять обновление.

Удалите вызов ExecuteReader.


varuncodee

Да, это большая ошибка, спасибо. я исправил это теперь, когда использую cmd.ExecuteNonQuery(); но все равно снова получаю эту ошибку.

OriginalGriff

Где именно вы его получаете и что показывает вам отладчик?

varuncodee

я получаю ошибку при сохранении изображения в базе данных. я получаю эту ошибку "не удалось сохранить; в настоящее время заблокирован другим пользователем". в cmd.ExecuteNonQuery(); строка.

OriginalGriff

Проверьте остальную часть вашего кода: есть ли у вас соединение, которое вы не закрыли и не утилизировали?