System.Data.SqlClient.SqlException: 无效的列名源错误: cmd.ExecuteNon



我有一个同时执行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);
}

问题是双重的:

  1. 即使可以更新主键,将其更新为相同的值也没有用。

  2. 您的列名是MovieId,而不是id,因此您的WHERE子句不正确。

使用此代码:

string query = "UPDATE Movie SET title = @Title, media = @Media, price = @Price, qtty = @Qtty, genre = @Genre WHERE MovieId = @MovieId";

您正在更新原始表中不存在的"Id"列,因此请按以下方式替换查询-

字符串查询 = "更新电影集标题 = @Title,媒体 = @Media,价格 = @Price,数量 = @Qtty,流派 = @Genre 其中 MovieId = @MovieId";

注意:- 您已经传递了正确的参数,但这只是在SQL查询中替换正确的列名的问题。

最新更新