2011-01-21 12 views
0

私はテスト目的でNULLを許可するためにすべての列を持つデータベーステーブルを持っています。私のすべての列の間に、int、varcharまたはbitのデータ型があります。私は、フォームを送信しようとすると私は、次のエラーメッセージが表示されます。ここではlinq to sqlの挿入エラーに関するヘルプ

Value was either too large or too small for an Int32. 

はコードです:

using (storeDataContext db = new storeDataContext()) 
     { 

      db.Dealerssses.InsertOnSubmit(new Dealersss 
      { 
       AppFName = txtFName.Text, 
       AppLName = txtLName.Text, 
       AppTitle = ddlTitles.SelectedItem.Text, 
       AppPhone = Convert.ToInt32(txtPhone.Text), 
       AppEmail = txtEmail.Text, 
       AppAddress = txtAddress.Text, 
       AppCity = txtCity.Text, 
       AppState = txtState.Text, 
       AppZip = Convert.ToInt32(txtZip.Text), 
       BusName = txtBusName.Text, 
       BusCA = Convert.ToInt32(txtBusResale.Text), 
       BusContact = txtBusContact.Text, 
       BusDBA = txtDBA.Text, 
       BusEIN = Convert.ToInt32(txtBusEIN.Text), 
       BusEmail = txtBusEmail.Text, 
       BusFax = Convert.ToInt32(txtBusFax.Text), 
       BusMonth = ddlMonthStart.SelectedItem.Text, 
       BusNumEmployees = Convert.ToInt32(txtBusEmployees.Text), 
       BusPhone = Convert.ToInt32(txtBusPhone.Text), 
       BusYear = int.Parse(txtYearStart.Text), 
       Active = false 
      }); 
      db.SubmitChanges(); 
     }; 
+0

あなたはこのエラーを読んでいますか? – SLaks

+0

@slaksの場合、フォームに転記される値は1〜15桁であるため、int32では値が大きすぎることはできません。 –

+2

あなたのコードは有効な郵便番号07055を駄目にするでしょう。**非数値データを整数列に格納しないでください!** – SLaks

答えて

2

Int32.MaxValueのみ10桁の長され、2,147,483,647です。
Int32で大きすぎます。

電話番号、ファックス番号、ZIPフィールド、およびEINフィールドは、数字ではなく文字列(NVARCHAR)でなければなりません。

+0

ha、私はint32の仕様を読んで2,147,483,647桁の長さと読んでいます... –

1

私はそれがあなたの電話番号フィールドの価値だと賭けています。 Int32は4バイト整数で、最大値は2147483647です。ほとんどの電話番号はオーバーフローします。

1

私の推測では、あなたの電話# 'sののInt32のの値持つにそれがある:2,147,483,647

-2147483648をあなたは517111111(5171111111)の電話番号を持っているのであれば、あなたが大きすぎます。

電話番号にはvarchar/charを使用する必要があります。

関連する問題