我正在使用下面的代码更新 SQL DB 中的一行。循环有效并更新了行,但问题是每次循环时,它只更新一个值,其他值都会被覆盖。因此,最后,它已更新,但不是将多个值输入到相应项目 ID 的表中,而是只为相应项目 ID 输入一个值。我没有收到任何错误。非常感谢任何帮助。
for (int i = 0; i < cbAvailableEntities.Items.Count - 1; i++)
{
SqlConnection connection = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand("UpdateProjectEntity", connection);
using (connection)
{
connection.Open();
using (cmd)
{
if (cbAvailableEntities.Items[i].Selected)
{
cmd.CommandType = CommandType.StoredProcedure;
//the following is the Project ID for the row being updated.
SqlParameter paramPID = new SqlParameter("@ProjectID", nr.ProjectID);
cmd.Parameters.Add(paramPID);
nr.Entities = cbAvailableEntities.Items[i].Value;
cmd.Parameters.AddWithValue("@CorpID", nr.Entities);
cmd.ExecuteNonQuery();
}
}
}
}
这是存储过程“UpdateProjectEntity”的 SQL 查询
ALTER PROCEDURE [dbo].[UpdateProjectEntity]
@ProjectID int,
@CorpID int
AS
BEGIN
UPDATE [dbo].[ProjectEntity]
SET
[CorpID] = @CorpID
WHERE
ProjectID = @ProjectID
END
这是我运行程序时的输入和结果的屏幕截图。 These are the checkboxes I am saving to the DB
This is the result after I have saved to the DB
我更改了日期以表明该程序中的其他所有内容均有效。
最佳答案
我可以看到您保存了实体INT
,也许您应该将其保存为逗号分隔的字符串。
因此,您可以保存 1,2,3
,而不是保存 1
当然,您必须在保存构建和连接字符串之前添加一些逻辑。当您从数据库读取数据并按 ,
另一种方法是创建一个关系表来指示所选择的选项。
但是当您删除选择并添加新选择时,这也会出现问题。
ProjectID CorpID
1 1
1 2
1 3
关于c# - 将多个复选框列表值更新到 SQL DB asp.net C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33000730/