Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 转换nvarchar值时转换失败';第1部分&x27;到数据类型int_C#_Sql - Fatal编程技术网

C# 转换nvarchar值时转换失败';第1部分&x27;到数据类型int

C# 转换nvarchar值时转换失败';第1部分&x27;到数据类型int,c#,sql,C#,Sql,C#中的代码: 此行是一个组合框,表为:-自动零件id(int), 自动零件描述(varchar(50)) 这个表单有一个数据网格视图,只显示数据,然后我将所有数据添加到数据库的数据网格视图中 在数据网格视图中显示数据的代码是:- private void btn_Add_Job_card_Click(object sender, EventArgs e) { Validation_Add_Job_card_order(); if (validate =

C#中的代码:

此行是一个组合框,表为:-自动零件id(int), 自动零件描述(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\u Parts\u id
列是整数类型,但您试图插入值“
part1
”,该值是字符串,无法隐式转换为整数

在您的
btn\u添加\u作业\u卡\u单击
方法中,您将设置以下内容:

r[3] = CB_Auto_parts.Text;
…然后在执行插入时使用此选项:

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

如果您想要ID而不是文本,您也可以将其存储在datarow中,并将其用作参数值而不是文本。

问题在于表中的
自动零件ID
列是整数类型,但您正在尝试插入值“
零件1
”,这是一个字符串,并且不能隐式转换为整数

在您的
btn\u添加\u作业\u卡\u单击
方法中,您将设置以下内容:

r[3] = CB_Auto_parts.Text;
…然后在执行插入时使用此选项:

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

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

如果您知道数据类型,请不要使用
AddWithValue()
;指定类型。根据错误,
Auto\u Parts\u Id
列是一个
int
,但您尝试插入的值是一个字符串(“第1部分”)。您不能将其插入该列。我知道,但此值是我如何将其传递到数据库的组合框。如果您知道数据类型,请不要使用
AddWithValue()
;指定类型。根据错误,
Auto\u Parts\u Id
列是一个
int
,但您尝试插入的值是一个字符串(“第1部分”)。你不能把它插入那个列。我知道,但这个值是组合框,我是如何将它传递到数据库的。是组合框,我使用此代码显示我在网格视图中选择的值,我希望将此值插入到DatabaseThis CB_Auto_parts。我用这个代码显示了我在网格视图中选择的值,我想把这个值插入数据库