-1

我正在尝试构建一个具有输入屏幕的 C# Web 应用程序。一些字段是数量字段。我可以将什么用作能够记录数值的数据库类型以及如何在我的代码中编写它?当前使用记录值的 Nchar,但是当我尝试对 Qty1 + Qty2 进行一些基本添加时,它似乎没有返回值。这是我目前拥有的:

nonqueryCommand.Parameters.Add("@Qty1", System.Data.SqlDbType.NChar, 10);

我试过数字和浮点数,但它们给了我一些关于将字符串转换为 int32 错误的信息。

在此处输入图像描述

感谢您的洞察力。

4

2 回答 2

2

如果您打算为 Qty 进行计算,那么最好不要将其作为字符数据类型存储在 SQL Server 中以避免不必要的显式/隐式转换。

你可以做的是:

a) 重新设计您的表以将 Qty 作为 int 数据类型。
b) 向您的文本框添加验证以仅接受数值。
c) 将文本框值转换为如下所示的数字类型,并将其传递给数据库 Qty 字段:

if (Int32.TryParse(txtQty1.Text)) 
  int Qty1 = Convert.ToInt32(txtQty1.Text);    
else
  //throw-handle exception

d) 如果您需要存储较大的数字或较小的数字,请在 C# 和 SQL Server 中使用适当的等效数据类型。例如,如果您需要long改用,那么您的代码将如下所示,并且您需要将 Qty 字段设置为bigint.

if (Int64.TryParse(txtQty1.Text)) 
  int Qty1 = Convert.ToInt64(txtQty1.Text);
else
//throw/handle exception 

链接将向您展示 SQL Server 和 .NET 框架之间的等效数据类型。


PS:请检查您的桌子设计。您可能希望对其进行规范化。
例如,您可以有一个单独的表,其中只有 ItemId、GroupId、Item、Qty、Cost。然后在现有表中,您可以删除所有 Item、Qty 和 Cost 列并保留主列。第二个表中的 GroupId 将是现有表的主键。这是对其进行规范化的一种方式。

于 2012-08-20T16:01:46.290 回答
1

你可以使用 int 类型

int qte1 = Convert.ToInt32(yourTextBox1.Text);;
int qte2 = Convert.ToInt32(yourTextBox2.Text);;

int result = qte1 + qte2;
于 2012-08-20T15:57:37.927 回答