我正在尝试构建一个具有输入屏幕的C#Web应用程序。一些字段是Qty字段。我可以使用什么作为数据库类型来记录数值以及如何在我的代码中编写它?目前使用Nchar记录值,但是当我尝试做一些基本的Qty1 + Qty2添加时,它似乎没有返回值。这就是我目前所拥有的:
nonqueryCommand.Parameters.Add("@Qty1", System.Data.SqlDbType.NChar, 10);
我已经尝试过数字和浮点数,但它们给了我一些关于将字符串转换为int32错误的信息。
感谢您的见解。
答案 0 :(得分:2)
如果您计划对Qty进行计算,则不希望在SQL Server中将其存储为字符数据类型,以避免不必要的显式/隐式转换。
你能做的是:
a)重新设计表以将Qty作为int数据类型 b)在文本框中添加验证以仅接受数值 c)将文本框值转换为如下所示的数字类型并传递给它 到数据库数量字段:
if (Int32.TryParse(txtQty1.Text))
int Qty1 = Convert.ToInt32(txtQty1.Text);
else
//throw-handle exception
d)如果您需要存储更大数字或更小数字,请使用
C#和SQL Server中适当的等效数据类型BOTH。例如,
如果您需要使用long
,那么您的代码将如下所示
您需要将数量字段设为bigint
。
if (Int64.TryParse(txtQty1.Text))
int Qty1 = Convert.ToInt64(txtQty1.Text);
else
//throw/handle exception
此link将向您显示SQL Server和.NET框架之间的等效数据类型。
PS:请检查你的桌面设计。您可能想要将其标准化 例如,您可以拥有一个仅包含ItemId,GroupId,Item,Qty,Cost的单独表。然后在现有表中,您可以删除所有Item,Qty和Cost列并保留主列。第二个表中的GroupId将是现有表的主键。这是使其正常化的一种方式。
答案 1 :(得分:1)
你可以使用int type
int qte1 = Convert.ToInt32(yourTextBox1.Text);;
int qte2 = Convert.ToInt32(yourTextBox2.Text);;
int result = qte1 + qte2;