【发布时间】:2016-01-26 16:22:12
【问题描述】:
我正在尝试使用以下代码从特定文本框和 C# Windows 窗体上的一个标签插入 SQL Server 中的事务表:
AppProcess abc = new AppProcess();
SqlConnection sqlconn1 = abc.GetConn();
SqlCommand sqlinsert = new SqlCommand("insert into Payment values
(@TID,@EID,@CustID,@CFName,@CLName,@BID,@BName,@Price,@Qty,@TransDate)",
sqlconn1);
DataTable dtCustomer = new DataTable();
sqlconn1.Open();
sqlinsert.Parameters.Add(new SqlParameter("@TID", SqlDbType.VarChar, 10));
sqlinsert.Parameters.Add(new SqlParameter("@EID", SqlDbType.VarChar, 10));
sqlinsert.Parameters.Add(new SqlParameter("@CustID", SqlDbType.VarChar, 10));
sqlinsert.Parameters.Add(new SqlParameter("@CFName", SqlDbType.VarChar, 100));
sqlinsert.Parameters.Add(new SqlParameter("@CLName", SqlDbType.VarChar, 100));
sqlinsert.Parameters.Add(new SqlParameter("@BID", SqlDbType.VarChar, 10));
sqlinsert.Parameters.Add(new SqlParameter("@BName", SqlDbType.VarChar, 100));
sqlinsert.Parameters.Add(new SqlParameter("@Price", SqlDbType.Int));
sqlinsert.Parameters.Add(new SqlParameter("@Qty", SqlDbType.Int));
sqlinsert.Parameters.Add(new SqlParameter("@Transdate", SqlDbType.Date));
sqlinsert.Parameters["@TID"].Value = tidTxt.Text;
sqlinsert.Parameters["@EID"].Value = eidTxt.Text;
sqlinsert.Parameters["@CustID"].Value = cidTxt.Text;
sqlinsert.Parameters["@CFName"].Value = cfnameTxt.Text;
sqlinsert.Parameters["@CLName"].Value = clnameTxt.Text;
sqlinsert.Parameters["@BID"].Value = bidTxt.Text;
sqlinsert.Parameters["@BName"].Value = bnameTxt.Text;
sqlinsert.Parameters["@Price"].Value = label17.Text;
sqlinsert.Parameters["@Qty"].Value = qtychoiceTxt.Text;
sqlinsert.Parameters["@Transdate"].Value = TransDateTxt.Text;
sqlinsert.ExecuteNonQuery();
我很困惑哪一行触发了错误。以及如何将字符串转换为 Int32?
【问题讨论】:
-
你从
label17.Text和qtychoiceTxt.Text得到什么?从异常细节来看,很明显您传入的是字符串而不是整数,这会导致FormatException。请检查这些字段值是否可以转换为整数? -
还向您的表单添加验证,以便用户不能在用于数字数据的文本框中输入任意文本
-
label17.Text 是在 qtychoiceTxt.Text 上选择的数量与产品价格计算后的总成本。我正在尝试保存这些值
-
为什么使用
label来显示结果?标签是用来给事物贴标签的。如果要向用户显示结果,请使用TextBox并将其设置为ReadOnly。
标签: c# sql-server winforms ado.net