我必须在我的表中添加4个值:@ SNTeacher,@ name,@ pwd和@ courseID。@ courseID是我的RegisterTeacher表中的FK和PK I Courses表以及另一个属性@ coursename。<登记/> 我的问题是,当我想将值插入表中时,我在@courseID处收到错误,说它无法将varchar转换为int,尽管我的@courseID是一个int。
我的@courseID和@coursename被绑定到comboBoxcourse1,它有DisplayMember-coursename和ValueMember = courseID。我的意见是,由于@coursename是一个varchar,它使得他们两个之间产生混淆,但是我再次#&# 39;因为我将@courseID参数添加到表RegisterTeacher中,所以看到了逻辑。
我也尝试用我在这里找到的3种不同的方式解析它,在Stack Overflow上但是我仍然得到错误,说输入字符串的格式不正确。
这是我的错误代码,也是我用来尝试解析该值的最后一个方法:
private void btnRegister_Click(object sender, EventArgs e)
{
string connString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\User\source\repos\VIAUniversityCollegeAttendanceApp\VIAUniversityCollegeAttendanceApp\DatabaseAttendanceStudents.mdf;Integrated Security=True;Connect Timeout=30";
SqlConnection con = new SqlConnection(connString);
con.Open();
SqlCommand cmd = new SqlCommand("Insert into RegisterTeacher values(@SNTeacher,@name,@pwd,@courseID) ", con);
cmd.Parameters.AddWithValue("@SNTeacher", textBoxSN.Text);
cmd.Parameters.AddWithValue("@name",textBoxName.Text);
cmd.Parameters.AddWithValue("@pwd", textBoxpwd.Text);
string nvarchar = "@courseID";
var one = int.Parse(nvarchar);
var bone = int.TryParse(nvarchar, out one);
cmd.Parameters.AddWithValue("@courseID", comboBoxcourse1.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Registration succesfull!");
}
答案 0 :(得分:-1)
这应该适合你:
int parameterValue;
SqlParameter parameter = new SqlParameter("@courseID", SqlDbType.Int);
if(Int32.TryParse(comboBoxcourse1.SelectedValue?.ToString() ?? String.Empty, out parameterValue))
{
parameter.Value = parameterValue;
}
else
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);