将varchar解析为int以将值插入数据库

时间:2018-02-21 11:36:23

标签: c# database parsing

我必须在我的表中添加4个值:@ SNTeacher,@ name,@ pwd和@ courseID。@ courseID是我的RegisterTeacher表中的FK和PK I Courses表以及另一个属性@ coursename。<登记/> 我的问题是,当我想将值插入表中时,我在@courseID处收到错误,说它无法将varchar转换为int,尽管我的@courseID是一个i​​nt。

我的@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!");
}

1 个答案:

答案 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);