2011-01-21 61 views
0

我有一個數據庫表,所有列允許空值用於測試目的。在我所有的列之間,我有int,varchar或bit數據類型。當我嘗試提交表單,我得到了以下錯誤消息:幫助LINQ到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 2011-01-21 03:35:42

+0

@slaks,表單中發佈的值在1到15位之間,因此int32的值不可能太大。 – 2011-01-21 03:37:16

回答

2

Int32.MaxValue2,147,483,647,這是隻有10位。
對於Int32,您的值爲太大。

您的電話,傳真,ZIP和EIN字段應該是字符串(NVARCHAR),而不是數字。

1

我敢打賭這是你電話號碼字段的值。 Int32是一個4字節的整數,最大值爲2147483647.大多數電話號碼都會溢出。

1

我的猜測是,它是在你的手機#的的Int32的具有值:

2,147,483,648 2,147,483,647

所以,如果你有517111111(5171111111)的電話號碼,你是太大。

你應該使用varchar/char作爲電話號碼。