Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Ошибка при обновлении записи в БД


Автор: SCAR 2.2.2010, 12:06
Доброго времени суток. У меня возникла следующая проблема, при попытке обновления строки в базе данных MS Access, из-за следующей ошибки, обновить базу не удается: 


Код

System.Data.OleDb.OleDbException was unhandled by user code
  Message="Отсутствует значение для одного или нескольких требуемых параметров."
  Source="Microsoft JET Database Engine"
  ErrorCode=-2147217904
  StackTrace:
       в System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
       в System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
       в System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
       в System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
       в System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
       в System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
       в EditTeams.UpdateBase(Object sender, EventArgs E) в d:\F1\EditTeams.aspx.cs:строка 79
       в System.Web.UI.WebControls.Button.OnClick(EventArgs e)
       в System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
       в System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       в System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       в System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       в System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
  InnerException: 



Вот код, который пытаюсь реализовать: 

Код

        string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=D:\F1\App_Data\Base.mdb";

        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            connection.Open();

            OleDbCommand command = new OleDbCommand("UPDATE Teams SET `Place`='" + textBox5.Text + "', `Teams`='" + textBox6.Text + "',  `Bals`='" + textBox7.Text + "' WHERE `ID`='" + textBox8.Text + "' ", connection);
            try
            {
                command.ExecuteNonQuery();
                Response.Redirect("EditTeams.aspx");
            }
            catch (OleDbException e)
            {
                string Msg = "ОШИБКА: Обновить запись не удалось.";
                Label1.Text = Msg;
                Response.Write("");
            }
        }


Подскажите что тут не так? Заранее спасибо.

Автор: mrbrooks 2.2.2010, 12:32
SCAR,
1. Зачем имена таблиц в кавычках?
2. Я бы использовал параметры.

Добавлено через 8 минут и 3 секунды
Вообще камрад - в целях отладки - неплохо было бы отработать запрос в самом Access, у него же есть возможность выполнения SQL - запросов.

Автор: SCAR 2.2.2010, 15:53
Цитата(mrbrooks @  2.2.2010,  12:32 Найти цитируемый пост)
1. Зачем имена таблиц в кавычках?

Это не имена таблиц, а имена полей, которые необходимо изменить в записи с заданным ID. Таблица называется "Teams".

Автор: mrbrooks 3.2.2010, 12:15
Цитата(SCAR @  2.2.2010,  15:53 Найти цитируемый пост)
Это не имена таблиц, а имена полей, которые необходимо изменить в записи с заданным ID. Таблица называется "Teams". 

описался. итак:


SCAR,  1. Зачем имена полей в кавычках?

Автор: Ceiceron 7.2.2010, 19:27
mrbrooks,  1. Зачем имена полей в кавычках?
При работе с Access это стандарт, т.к. могут быть поля с пробелами в названии.

Автор: chip_and_dayl 7.2.2010, 19:56
Ceiceron
Ну, так зачем их использовать, если имена не содержат пробелы. Вот в чем вопрос


SCAR
Сколько в таблице полей? 3?

Автор: mrbrooks 8.2.2010, 11:45
Цитата(Ceiceron @  7.2.2010,  19:27 Найти цитируемый пост)
При работе с Access это стандарт, т.к. могут быть поля с пробелами в названии.

Дык пробелов то нет.

Цитата(chip_and_dayl @  7.2.2010,  19:56 Найти цитируемый пост)
Ceiceron
Ну, так зачем их использовать, если имена не содержат пробелы. Вот в чем вопрос

Точно.

На самом деле очень не удачный вариант формирования строки запроса. Заметьте - параметры не лохи придумали.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)