繁体   English   中英

将nvarchar值“第1部分”转换为数据类型int时转换失败

[英]Conversion failed when converting the nvarchar value 'Part 1' to data type int

C#中的代码:-

private void btn_Add_Click(object sender, EventArgs e)
{
    for (int i = 0; i < dgv_Add_job_card.Rows.Count; i++)
    {
        con.Open();
        s = "insert into Auto_Part_Details (Items_No, Job_Card, Value_Part, Auto_Parts_id) values (@Items_No, @Job_Card, @Value_Part,@Auto_Parts_id )";
        sd=new SqlCommand(s,con);
        sd.Parameters.AddWithValue("@Items_No", dgv_Add_job_card.Rows[i].Cells[0].Value);
        sd.Parameters.AddWithValue("@Job_Card", dgv_Add_job_card.Rows[i].Cells[1].Value);
        sd.Parameters.AddWithValue("@Value_Part", dgv_Add_job_card.Rows[i].Cells[2].Value);
        sd.Parameters.AddWithValue("@Auto_Parts_id", dgv_Add_job_card.Rows[i].Cells[3].Value);
        sd.ExecuteNonQuery();
        con.Close();
    }
}

该行中的错误:-

sd.Parameters.AddWithValue("@Auto_Parts_id", dgv_Add_job_card.Rows[i].Cells[3].Value);

这行是一个组合框,表格是:-Auto_Parts_id(int),Auto_Part_desc(varchar(50))

并且此表单具有仅显示数据的数据网格视图,此后,我添加了所有数据,然后将其插入到数据网格视图中。

我在数据网格视图中显示数据的代码是:-

private void btn_Add_Job_card_Click(object sender, EventArgs e)
    {

        Validation_Add_Job_card_order();
        if (validate == true)
        {
            DataRow r = dt.NewRow();
            // = dt.Rows.Count + 1;
            r[0] = dt.Rows.Count + 1;
            //r[0] = txt_Items_No.Text;
            r[1] = txt_Job_card.Text;
            r[2] = txt_Value_Part.Text;
            r[3] = CB_Auto_parts.Text;
            r[4] = x;
            r[5] = CB_Providers_desc.Text;
            r[6] = CB_Hand_installation.Text;
            r[7] = txt_Notes.Text;

            dt.Rows.Add(r);
            dgv_Add_job_card.DataSource = dt;
            ClearText();

            txt_Total_Values.Text = (from DataGridViewRow row in dgv_Add_job_card.Rows
                                     where row.Cells[2].FormattedValue.ToString() != string.Empty
                                     select Convert.ToDouble(row.Cells[2].FormattedValue)).Sum().ToString();
        }
    }

问题是表中的Auto_Parts_id列是整数类型,但是您试图插入作为字符串的值“ Part 1 ”,并且不能将其隐式转换为整数。

btn_Add_Job_card_Click方法中,您需要进行以下设置:

r[3] = CB_Auto_parts.Text;

...然后在插入时使用此代码:

sd.Parameters.AddWithValue("@Auto_Parts_id", dgv_Add_job_card.Rows[i].Cells[3].Value);

如果要使用ID而不是文本,则也可以将其存储在数据行中,并将其用作参数值而不是文本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM