我有一个下拉列表,我试图将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())
我收到此错误:
输入字符串的格式不正确。
答案 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;