将 nvarchar 值 'meetingId' 转换为数据类型 int 时转换失败

Conversion failed when converting the nvarchar value 'meetingId' to data type int

我有一个下拉列表,我正在尝试将 DataValueField 插入数据库 table。 DataValueField 是从数据库中检索的,列的数据类型是 INT。但是,当 运行 查询时,我收到此错误消息

Conversion failed when converting the nvarchar value 'meetingId' to data type int.

代码:

if (MinuteUpload.HasFile)
{
    string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

    string updateSql = "UPDATE Project_Meeting SET meetingMinute = @meetingMinute WHERE meetingId = @MeetingId"; ;

    using (SqlConnection myConnection = new SqlConnection(connectionString))
    {
        myConnection.Open();

        SqlCommand myCommand = new SqlCommand(updateSql, myConnection);

        myCommand.Parameters.AddWithValue("@meetingMinute", "postUpload/" + filename);
        myCommand.Parameters.AddWithValue("@MeetingId", MinuteDropDown.DataValueField);

        myCommand.ExecuteNonQuery();

        myConnection.Close();
    }
}

然而,当我尝试

Convert.ToIint.TryParse16(MinuteDropDown.DataValueField.Trim())

我收到这个错误:

Input string was not in a correct format.

你的线路:

myCommand.Parameters.AddWithValue("@MeetingId", MinuteDropDown.DataValueField);

有两点不对。首先,DataValueField 表示 属性 的名称,而不是 属性 的值。 SelectedValue就是你想要的。

但是一旦您进行了更改,SelectedValue 仍然是一个字符串。在添加参数之前,您应该提前将其解析为 int

int meetingId = int.Parse(MinuteDropDown.SelectedValue);
myCommand.Parameters.AddWithValue("@MeetingId", meetingId);

您需要指定参数的类型。假设您的 meetingId 字段是 int 类型:

// replace this line
myCommand.Parameters.AddWithValue("@MeetingId", MinuteDropDown.DataValueField);
// with
myCommand.Parameters.Add("@MeetingId", SqlDbType.Int);
myCommand.Parameters("@MeetingId").Value = MinuteDropDown.DataValueField;