Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将字符串转换为int32 c#?_C#_Sql Server_Winforms_Ado.net - Fatal编程技术网

如何将字符串转换为int32 c#?

如何将字符串转换为int32 c#?,c#,sql-server,winforms,ado.net,C#,Sql Server,Winforms,Ado.net,我正在尝试从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,@

我正在尝试从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?

您必须使用convert.ToInt32(“字符串”)将“label17.Text”和“QTYChoiceText.Text”转换为整数。

转换时应使用如下代码:

command.Parameters.Add("@Qty", SqlDbType.Int).Value = Convert.ToInt32(qtychoiceTxt.Text);

您从
label17.Text
qtychoicetext.Text
中得到了什么?从异常细节来看,很明显,您传入的是字符串而不是int,这会导致
格式异常
。请检查这些字段值是否可以强制转换为int?还要在表单中添加验证,以便用户不能在数字数据标签17的文本框中键入任意文本。文本是在计算上选择的数量后的总成本qtychoicext.Text与产品价格。我正在尝试保存这些值为什么要使用
标签
显示结果?标签是用来给事物贴标签的。如果要向用户显示结果,请使用
文本框
,并将其设置为
只读
。如果任何字段的值都不是int,则可能会出现这种情况。使用
TryParse
而不是真的-此时最好抛出异常,而不是记录数量为0或金额为0的付款<在调用存储过程之前,应该使用code>TryParse
来验证输入。我们只是在讨论转换,而不是完整的功能。如果任何字段的值不是int,这可能会出错。我建议改为使用
TryParse
。@AmitKumarGhosh这是简单的转换,而不是验证。对于验证我们应该处理这个值,也可以使用int。TryParse@AmitKumarGhosh打破在这里是合适的。默认情况下,要求用户修复数据比存储0更好。意外“支付”0不是一个愉快的情况。这个问题是关于转换,而不是关于验证。对于验证,我们有很多解决方案。@AmitKumarGhosh好的是,表单上有验证程序,数据绑定代码上有验证(所有这些都是OOTB提供的),最后,是,如果以前的验证失败,则引发异常并警告用户。如果我的公司意外地付给我0欧元,我一点也不高兴