C# & SQL Server 查询错误:无法绑定多部分标识符

本文关键字:绑定 多部 标识符 错误 amp SQL 查询 Server | 更新日期: 2023-09-27 17:56:34

protected void btnSubmit_Click(object sender, EventArgs e)
{
    connectionString = ConfigurationManager.ConnectionStrings["LeaveMangementSystemCS"].ConnectionString;
    conn = new SqlConnection(connectionString);
    string sql = "UPDATE LeaveType  SET LeaveType.Type=@Type, LeaveType.Description=@Description, LeaveType.NumOfDays=@NumOfDays, LeaveCategory.Category=@Category FROM LeaveType INNER JOIN LeaveCategory on LeaveType.LeaveCategoryId = LeaveCategory.Id  WHERE LeaveType.Id=@id";
    try
    {
            cmd = new SqlCommand(sql, conn);
            cmd.Parameters.AddWithValue("@Type", tbType.Text);
            cmd.Parameters.AddWithValue("@Description", tbDescription.Text);
            cmd.Parameters.AddWithValue("@NumOfDays",tbNumOfDays.Text);
            cmd.Parameters.AddWithValue("@Category", ddlLeaveCategory.Text);
            cmd.Parameters.AddWithValue("@id", lblIdOut.Text);
            conn.Open();
            int rows = cmd.ExecuteNonQuery();
            if (rows > 0)
            {
                lblOutput.Text = " Updated successfully.";
            }
    }
    catch (Exception ex)
    {
        lblOutput.Text = "Error Message : " + ex.Message;
    }
    finally
    {
        if (conn != null)
            conn.Close();
    }
}

我的 SQL 查询中有一个错误:

无法绑定多部分标识符"LeaveCategory.Category"。

我尝试使用leavetype作为a,将leavecategory用作b,但仍然有此错误。

C# & SQL Server 查询错误:无法绑定多部分标识符

不能在一个语句中更新多个表!在sql变量上查看:

UPDATE LeaveType  
SET LeaveType.Type=@Type
,   LeaveType.Description=@Description
,   LeaveType.NumOfDays=@NumOfDays
,   LeaveCategory.Category=@Category 
FROM LeaveType 
INNER JOIN LeaveCategory on LeaveType.LeaveCategoryId = LeaveCategory.Id  
WHERE LeaveType.Id=@id";

在这里,您尝试更新表LeaveType和表中的一列LeaveCategory

请看这个

您需要准备两个单独的 sql 语句,不能一次更新两个表。您可以将它们包装在存储过程中,逐个更新它们,并从 C# 代码调用进程。