将此错误传递给txtNum.Text
我不知道该怎么做我已经尝试了
Convert.ToInt32
和SqlDbType.Int
但它不起作用请帮帮我
总计有一个$符号可能就是这个问题。 Total的DataType是十进制
com = new SqlCommand(@"INSERT INTO Orders(
OrderDate,
Username,
FirstName,
LastName,
Address,
Phone,
Total,
HasBeenShipped
)
VALUES(
GetDate(),
@p5,
@p1,
@p2,
@p3,
@p4,
@p6,
'false'
)", con2);
com.Parameters.AddWithValue("@p5", Label2.Text);
com.Parameters.AddWithValue("@p1", txtFname.Text);
com.Parameters.AddWithValue("@p2", TxtLname.Text);
com.Parameters.AddWithValue("@p3", TxtAdd.Text);
com.Parameters.AddWithValue("@p4", Convert.ToInt32(TxtNum.Text));
com.Parameters.AddWithValue("@p6", lblTotal.Text);
com.ExecuteNonQuery();
答案 0 :(得分:1)
我认为最后一个字段HasBeenShipped
在数据库中是一个数据类型
如果是这种情况,则传递0(数值),因为它不是'false'(字符串)
此外,参数@p6
包含字段Total
的值,因此该参数应转换为数字,而参数@p4
可以是如果字段Phone
是NVarChar
com = new SqlCommand(@"INSERT INTO Orders
(OrderDate, Username, FirstName, LastName, Address, Phone, Total, HasBeenShipped)
VALUES(GetDate(), @p5, @p1, @p2, @p3, @p4, @p6, 0)", con2);
com.Parameters.AddWithValue("@p5", Label2.Text);
com.Parameters.AddWithValue("@p1", txtFname.Text);
com.Parameters.AddWithValue("@p2", TxtLname.Text);
com.Parameters.AddWithValue("@p3", TxtAdd.Text);
com.Parameters.AddWithValue("@p4", TxtNum.Text);
com.Parameters.AddWithValue("@p6", Convert.ToInt32(lblTotal.Text));
编辑按照下面的评论,如果lblTotal.Text
包含货币符号,那么您无法直接转换为包含Convert.ToInt32的整数,则应使用decimal.TryParse
decimal totalValue
decimal.TryParse(lblTotal.Text, NumberStyles.Currency,
CultureInfo.CurrentCulture, out totalValue);
com.Parameters.AddWithValue("@p6", totalValue);
答案 1 :(得分:1)
如果将lblTotal
格式化为货币,则可以使用:
com.Parameters.AddWithValue("@p6", Decimal.Parse(lblTotal.Text,NumberStyles.Currency));
显然,如果不是有效的货币值,它会抛出异常 - 你需要决定在这种情况下该做什么。