-1

入力画面を持つC#Webアプリを構築しようとしています。一部のフィールドは数量フィールドです。数値を記録できるようにするためのデータベースタイプとして何を使用できますか?また、それをコードにどのように記述しますか?現在、値を記録するNcharを使用していますが、たとえばQty1 + Qty2の基本的な加算を実行しようとすると、値が返されないようです。これは私が現在持っているものです:

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

私はnumericとfloatを試しましたが、文字列をint32エラーに変換することについて何かを教えてくれます。

ここに画像の説明を入力してください

洞察に感謝します。

4

2 に答える 2

2

Qtyの計算を計画している場合は、不要な明示的/暗黙的な変換を避けるために、SQLServerに文字データ型として格納することはお勧めしません。

あなたができることは次のとおりです。

a)Qtyをintデータ型として使用するようにテーブルを再設計します。
b)数値のみを受け入れるように、テキストボックスに検証を追加します。
c)テキストボックスの値を以下のような数値タイプに変換し、これをデータベースの数量フィールドに渡します。

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

d)大きい数値または小さい数値を格納する必要がある場合は、C#とSQLServerの両方で適切な同等のデータ型を使用します。たとえば、long代わりに使用する必要がある場合、コードは次のようになり、Qtyフィールドをとして持つ必要がありますbigint

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

このリンクには、SQLServerと.NETFrameworkの間の同等のデータ型が表示されます。


PS:テーブルのデザインを確認してください。正規化することをお勧めします。
たとえば、ItemId、GroupId、Item、Qty、Costのみを含む別のテーブルを作成できます。次に、既存のテーブルで、すべてのアイテム、数量、およびコストの列を削除し、マスター列を保持できます。2番目のテーブルのGroupIdは、既存のテーブルの主キーになります。これは、それを正規化する1つの方法です。

于 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 に答える