Не удалось преобразовать значение параметра из String в Int32 при умножении определенного значения из базы данных на значение текстового поля - PullRequest
0 голосов
/ 29 августа 2018

Ниже этого кода я столкнулся с этой ошибкой. В моей базе данных employee_product у меня есть столбцы с именами "Unitcost" и "Quantity", оба типа int dbdatatype. Я не знаю, имеет ли право преобразовать его в int, потому что это уже тип int в моей базе данных. product_result, который является моей другой базой данных, я хочу умножить значение моей стоимости в моей базе данных emplyoee_product на мое текстовое поле количества, передать результат в Total и отобразить результат в моем product_result в столбце «Total». Пожалуйста, помогите мне построить правильный путь в моем коде.

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 голосов
/ 29 августа 2018

Не удалось преобразовать значение параметра из String в Int32 означает, что вы передаете значение string в SqlParameter параметр, который установлен как SqlDbType.Int. Если значения получены из свойства Text текстового поля (которое является свойством string), убедитесь, что вы сначала преобразовали их, используя Convert.ToInt32, int.Parse или int.TryParse перед назначением:

 command.Parameters.Add("@Discount", SqlDbType.Int).Value = Convert.ToInt32(txt_discount.Text);
 command.Parameters.Add("@Quantity", SqlDbType.Int).Value = Convert.ToInt32(txt_quantity.Text);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...