System.Data.SqlClient.SqlException: неверная ошибка источника имени столбца: cmd.ExecuteNonQuery () - PullRequest
1 голос
/ 12 октября 2019

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

System.Data.SqlClient.SqlException: неверное имя столбца 'id'

ошибка источника:
строка 133: cmd.ExecuteNonQuery();

Вот моя база данных

CREATE TABLE [dbo].[Movie] 
(
    [MovieId] INT         NOT NULL,
    [Title]   VARCHAR(50) NOT NULL,
    [Media]   VARCHAR(50) NOT NULL,
    [Price]   MONEY       NOT NULL,
    [Qtty]    INT         NOT NULL,
    [Genre]   VARCHAR(10) NULL,

    PRIMARY KEY CLUSTERED ([MovieId] ASC) 
);

C # код:

protected void OnRowUpdating(object sender, EventArgs e)
{
        string id = txtMovId.Text;
        string title = txtTitle.Text;
        string media = txtMedia.Text;
        string price = txtPrice.Text;
        string qtty = txtQtty.Text;
        string genre = txtGenre.Text;

        string query = "UPDATE Movie SET id = @MovieId, title = @Title, media = @Media, price = @Price, qtty = @Qtty, genre = @Genre WHERE id = @MovieId";
        string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand(query))
            {
                cmd.Parameters.AddWithValue("@MovieId", id);
                cmd.Parameters.AddWithValue("@Title", title);
                cmd.Parameters.AddWithValue("@Media", media);
                cmd.Parameters.AddWithValue("@Price", price);
                cmd.Parameters.AddWithValue("@Qtty", qtty);
                cmd.Parameters.AddWithValue("@Genre", genre);

                cmd.Connection = con;
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();

                lblUpdateMsg.Visible = true;
            }
        }

        BindGrid();
        Response.Redirect(Request.Url.AbsoluteUri);
    }

Ответы [ 2 ]

1 голос
/ 12 октября 2019

Проблема двоякая:

  1. Даже если вы можете обновить первичный ключ, обновлять его до того же значения бесполезно.

  2. Ваше имя столбца MovieId, а не id, поэтому ваше WHERE предложение неверно.

Используйте этот код:

string query = "UPDATE Movie SET title = @Title, media = @Media, price = @Price, qtty = @Qtty, genre = @Genre WHERE MovieId = @MovieId";
0 голосов
/ 12 октября 2019

Вы обновляете столбец «Идентификатор», которого нет в исходной таблице, поэтому замените ваш запрос, как показано ниже -

string query = "ОБНОВИТЬ Набор видеофильмов title = @Title, media = @Media, price =@Price, qtty = @Qtty, genre = @Genre WHERE MovieId = @MovieId ";

Примечание: - вы передали правильный параметр, но это просто вопрос замены правильного имени столбца в запросе SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...