[英]Dynamic SQL issue - C# Forms (Datagridview)
我目前正在尝试将我的 DataGridView 更新到我的数据库。 我希望能够使用回车键更新它。 但我收到此错误:
“不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。”
这是代码的图片(以及下面的代码片段)一些代码
以下是 Datagridview 的加载方式:
private void RampBoardLoader()
{
SqlConnection connection = new SqlConnection(ConnectionLoader.ConnectionString("Threshold"));
connection.Open();
SqlCommand selectRampBoard = new SqlCommand("Select_Ramp_Data", connection);
selectRampBoard.CommandType = CommandType.StoredProcedure;
selectRampBoard.Parameters.AddWithValue("@DateID", dateTimeRamp.Value.Date);
dt = new DataTable();
dataAdapter = new SqlDataAdapter(selectRampBoard);
dset = new DataSet();
dataAdapter.Fill(dset, "Ramp_Board");
dgvRampBoard.DataSource = dset.Tables[0];
connection.Close();
}
这是我尝试更新数据网格视图的地方:
private void dgvRampBoard_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
e.Handled = true;
scb = new SqlCommandBuilder(dataAdapter);
dgvRampBoard.EndEdit();
this.dataAdapter.Update(dset, "Ramp_Board");
}
}
我一直在四处寻找,试图找到这个问题的答案。 我看到每个人的每一篇帖子都说你需要确保你的表有一个主键。 我的表确实有一个主键。 它有 2 个主键。 “航班号”和“日期 ID”。 我不确定是不是因为我有 2 个主键,如果这就是我遇到此问题的原因。
附件是我的存储过程的数据库图像。 您还可以看到列,我有 2 个主键存储过程
如何让生活变得轻松:
(注意;这只适用于 .net 框架项目;设计者在 .net 核心中存在错误,微软已将其禁用。如果您想在核心中工作,可以使用一些技巧,但它们基本上需要使用 .net 框架项目进行编辑和 a.netcore 进行运行)
就是这样,您现在应该可以运行该应用程序,在框中输入一些日期 ID,点击填充,更改数据,点击保存。
如果您好奇它是如何工作的,您可以在后面的正常代码和 FormXx.Designer.cs 文件中找到设计师为您编写的代码。 tableadaptermanager 将为每个需要更新的表调用tableadapter.Update(datatable)
在“父,子”顺序上。 表适配器的 Update 根据行 state 的内容适当地使用 InsertCommand、UpdateCommand 和 DeleteCommand 来持久化每一行更改
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.