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

时间:2015-01-23 18:24:26

标签: c# sql asp.net sql-server visual-studio-2010

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

  

转换nvarchar值' meetingId'转换失败数据类型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())

我收到此错误:

  

输入字符串的格式不正确。

2 个答案:

答案 0 :(得分:2)

你的专栏:

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

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

但是一旦你做出改变,SelectedValue仍然是一个字符串。在添加参数之前,您应该提前将其解析为int

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

答案 1 :(得分:0)

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

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