Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ошибка при изменении записи

5.1K
20 апреля 2013 года
tumanovalex
39 / / 21.11.2005
Код
Код:
private void bindingNavigatorSaveItem_Click(object sender, EventArgs e
{
  OleDbParameter p;
  // insert
  string strIns = "INSERT INTO tbl1(id, txt) VALUES (?, ?)";
  OleDbCommand insertCmd = new OleDbCommand(strIns, con);
  da.InsertCommand = insertCmd;
  p = new OleDbParameter("@id", OleDbType.Integer);
  p.SourceColumn = "id";
  p.SourceVersion = DataRowVersion.Original;
  insertCmd.Parameters.Add(p);
  p = new OleDbParameter("@txt", OleDbType.VarChar);
  p.SourceColumn = "txt";
  p.SourceVersion = DataRowVersion.Original;
  insertCmd.Parameters.Add(p);
 // update
  string strUpd = "UPDATE tbl1 SET id = ?, txt = ?";
   //string strUpd = "UPDATE tbl1 SET txt = ?";
  OleDbCommand updateCmd = new OleDbCommand(strUpd, con);
  da.UpdateCommand = updateCmd;
  p = new OleDbParameter("@id", OleDbType.Integer);
  p.SourceColumn = "id";
  p.SourceVersion = DataRowVersion.Original;
  updateCmd.Parameters.Add(p);
  p = new OleDbParameter("@txt", OleDbType.VarChar);
  p.SourceColumn = "txt";
  p.SourceVersion = DataRowVersion.Original;
  updateCmd.Parameters.Add(p);
  // delete
  string strDel = "DELETE FROM tbl1 WHERE id = ? AND txt = ?";
  OleDbCommand deleteCmd = new OleDbCommand(strDel, con);
  da.DeleteCommand = deleteCmd;
  p = new OleDbParameter("@id", OleDbType.Integer);
  p.SourceColumn = "id";
  p.SourceVersion = DataRowVersion.Original;
  deleteCmd.Parameters.Add(p);
  p = new OleDbParameter("@txt", OleDbType.VarChar);
  p.SourceColumn = "txt";
  p.SourceVersion = DataRowVersion.Original;
  deleteCmd.Parameters.Add(p);
  da.Update(ds.Tables[0]);
}
дает возможность сохранить в базе mdb новые записи. Но не получается update. При изменении поля txt и попытке записи получаю "Невозможно обновить поле 'id'; не обновляемое поле". Подскажите, пожалуйста, как исправить эту ошибку. Проект на http://yadi.sk/d/Ae5lW8Pc4CL50 (у меня не получилось загрузить файл на форум, хотя его размер всего 29 кб)
1
20 апреля 2013 года
kot_
7.3K / / 20.01.2000
не обновлять поле id. Что имено из сказанного в сообщении об ошибке для тебя не понятно?
Это значит что не нужно включать его в качестве параметра.
5.1K
20 апреля 2013 года
tumanovalex
39 / / 21.11.2005
Cпасибо, получилось так:
Код:
string strUpd = "UPDATE tbl1 SET txt = ? WHERE id = ?";
OleDbCommand updateCmd = new OleDbCommand(strUpd, con);
da.UpdateCommand = updateCmd;
p = new OleDbParameter("@txt", OleDbType.VarChar);
p.SourceColumn = "txt";
p.SourceVersion = DataRowVersion.Current;
updateCmd.Parameters.Add(p);
p = new OleDbParameter("@id", OleDbType.Integer);
p.SourceColumn = "id";
p.SourceVersion = DataRowVersion.Original;
updateCmd.Parameters.Add(p);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог