将特定值从数据库乘以文本框值时,无法将参数值从字符串转换为Int32

时间:2018-08-29 02:52:30

标签: c# sql-server winforms

在此代码下面,我遇到了该错误。在我的数据库employee_product中,我的列名为“ Unitcost”和“ Quantity”均为int dbdatatype。我不知道将其转换为int的权利,因为它已经是我数据库中的int类型。 product_result我的另一个数据库,我想将emplyoee_product数据库中的成本值乘以我的数量文本框,并将结果传递给Total,并将结果显示在product_result的“总计”列中。请帮助我在代码中构造正确的方法。

int Total;
int Cost;
int Quantity;
byte[] data;


// This is the code where i get my quantity on my quantity textbox
public void DisplayQuantity()
    {
        using (var con = SQLConnection.GetConnection())
        {
            using (var select = new SqlCommand("Select * from employee_product where Codeitem = @Codeitem ", con))
            {
                select.Parameters.Add("@Codeitem", SqlDbType.VarChar).Value = _view.txt_code.Text;
                using (var reader = select.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        txt_quantity.Text = reader["Quantity"].ToString();
                    }
                }
            }
        }
    }

private void btn_ok_Click(object sender, EventArgs e)
    {
        using (var con = SQLConnection.GetConnection())
        {
            using (var selects = new SqlCommand("Select * from employee_product where Codeitem =@Codeitem ", con))
            {
                selects.Parameters.Add("@Codeitem", SqlDbType.VarChar).Value = _view.txt_code.Text;
                using (var reader = selects.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        data = (byte[])reader["Image"];
                        Cost = Convert.ToInt32(reader["Unitcost"]);
                        Convert.ToInt32(Total);
                        Quantity = Convert.ToInt32(txt_quantity.Text);
                        Total = Quantity * Cost;
                    }
                }                    
            }
            using (var command = new SqlCommand("Insert into product_result (Date, Image, Code, Name, Price, Discount, Quantity, Total) Values (@Date, @Image, @Code, @Name, @Price, @Discount, @Quantity, @Total)", con))
            {

                command.Parameters.Add("@Date", SqlDbType.VarChar).Value = date;
                command.Parameters.Add("@Image", SqlDbType.VarBinary).Value = data;
                command.Parameters.Add("@Code", SqlDbType.VarChar).Value = _view.txt_code.Text.Trim();
                command.Parameters.Add("@Name", SqlDbType.VarChar).Value = _view.txt_name.Text.Trim();
                command.Parameters.Add("@Price", SqlDbType.VarChar).Value = _view.txt_price.Text;
                command.Parameters.Add("@Discount", SqlDbType.Int).Value = txt_discount.Text;
                command.Parameters.Add("@Quantity", SqlDbType.Int).Value = txt_quantity.Text;
                command.Parameters.Add("@Total", SqlDbType.Int).Value = Total;

                command.ExecuteNonQuery();
            }

1 个答案:

答案 0 :(得分:1)

无法将参数值从字符串转换为Int32 表示您正在将string值传递给设置为SqlParameter的{​​{1}}参数。如果值来自文本框的SqlDbType.Int属性(这是Text属性),请确保首先使用stringConvert.ToInt32或{{1}进行转换。 },然后分配:

int.Parse