在此代码下面,我遇到了该错误。在我的数据库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();
}
答案 0 :(得分:1)
无法将参数值从字符串转换为Int32 表示您正在将string
值传递给设置为SqlParameter
的{{1}}参数。如果值来自文本框的SqlDbType.Int
属性(这是Text
属性),请确保首先使用string
,Convert.ToInt32
或{{1}进行转换。 },然后分配:
int.Parse