输入字符串的格式不正确

时间:2015-06-11 05:59:14

标签: c# winforms combobox

我是c#编程的新手,我无法获得此代码。我得到的错误是

  

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

我知道这是一个重复的问题,但到目前为止我发现了什么,没有'帮助了我很多。我使用下面的代码将一些数据插入到mssql数据库中。

public void btnAdauga_Click(object sender, EventArgs e)
{
    try
    {
        using (SqlConnection con = new SqlConnection(cs))
        {
            con.Open();
            SqlCommand cmd = new SqlCommand(insert, con);
            cmd.Parameters.AddWithValue("@IDAutocar", txtID.Text);
            cmd.Parameters.AddWithValue("@IDTipAutocar", txtIDTip.Text);
            cmd.Parameters.AddWithValue("@TipAutocar", int.Parse(cmbTip.SelectedValue.ToString()));
            int val = cmd.ExecuteNonQuery();
            MessageBox.Show(val + "Autocarul a fost adaugat cu succes!");
            con.Close();
            this.Dispose();
        }
    }

    catch (Exception er){MessageBox.Show(er.Message);}
}

插入声明:string insert = "INSERT INTO Autocare (IDAutocar, IDTipAutocar, TipAutocar) VALUES (@IDAutocar, @IDTipAutocar, @TipAutocar)";

错误出现在这行代码中:cmd.Parameters.AddWithValue("@TipAutocar", int.Parse(cmbTip.SelectedValue.ToString()));任何人都可以告诉我我错过了什么吗?感谢

4 个答案:

答案 0 :(得分:0)

尝试使用Int.TryParse函数而不是Int.Parse,并在该行之前处理解析异常。像这样:

        using (SqlConnection con = new SqlConnection(cs))
        {
            con.Open();
            SqlCommand cmd = new SqlCommand(insert, con);
            cmd.Parameters.AddWithValue("@IDAutocar", txtID.Text);
            cmd.Parameters.AddWithValue("@IDTipAutocar", txtIDTip.Text);

            int tipAutocar = 0;
            if (int.TryParse(cmbTip.SelectedValue.ToString(), out tipAutocar))
            {
                //if successful
                cmd.Parameters.AddWithValue("@TipAutocar", tipAutocar));
            }
            else
            {
                //if not successful, do sth else
            }

            int val = cmd.ExecuteNonQuery();
            MessageBox.Show(val + "Autocarul a fost adaugat cu succes!");
            con.Close();
            this.Dispose();
        }

答案 1 :(得分:0)

如果你的组合框包含int值作为字符串,那么使用

int.Parse(cmbTip.Text);

如果您想要所选文本的索引,请使用

int.Parse(cmbTip.SelectedIndex);

答案 2 :(得分:0)

根据Yeldar的建议,我已移除int.Parse并仅使用combo.SelectedValue并且有效!

答案 3 :(得分:0)

  1. 使用断点正确调试并进入代码,并在调试菜单中在“监视”窗口中添加感兴趣的变量,或在调试时在“本地”窗口中查找它们。 [例如cmbTip.SelectedValue.ToString()]
  2. 正如其他人所指出的cmbTip.SelectedValue.ToString()可能是例外的原因。
  3. cmbTip即使在选择错误仍然存​​在的值,或selectedValueNULL之后,尝试使用SelectedText