2009-09-08 23 views
0

我正在開發一個窗體來插入數據(SQlServer 2005)中的數據我在WPF中使用Linq到Sql;無法保存整數,如果它是空的

我有這個數據庫:

Column Name    Data Type   Allow Null 
    CODE ID    Int(autoIncr)   No 
    BoatName    Nvarchar(100)   No 
    BoatType    Nvarchar(50)   yes 
    NumberOfSeats   Int     yes 
And so on... 

現在,當我插入我的形式一個新的記錄,如果我離開空白文本框「txtNumberOfSeats」是指場「NumberOfSeat」數據庫 ,當我點擊按鈕保存數據庫給我這個錯誤:「輸入字符串的格式不正確。」

爲什麼我不能離開字段「NumberOfSeats」爲空,如果我在數據庫中設置它AllowNull =是?

我帖子的時候我按一下按鈕保存插入到新的記錄在數據庫中後面的代碼:

DataClassesDataContext dc = new DataClassesDataContext(); 
Boat_TBL boat = new Boat_TBL(); 
boat.BoatName = txtBoatName.Text; 
boat.BoatType = txtBoatType.Text; 
boat.NumberOfSeats = Int32.Parse(txtNumberOfSeats.Text); 
dc.Boat_TBLs.InsertOnSubmit(boat); 
dc.SubmitChanges; 

你有什麼建議,制定出這個功能嗎?

非常感謝

乾杯

+0

是啊,可愛的「輸入字符串的不正確的格式」錯誤......回憶。 – bryanbcook 2009-09-08 03:51:22

回答

2

保存到數據庫時,您可以在數據訪問層上傳遞null。 例如嘗試是這樣的:

if (String.isNullOrEmpty(txtNumberOfSeats.Text)) 
{ 
    NumberOfSeats = DBNull.Value; 
} 
+0

嗨waqasahmed,我想你的代碼,但我收到此錯誤:「‘?INT’不能鍵入‘System.DBNull’隱式轉換爲」 這裏是代碼: 如果(String.isNullOrEmpty(txtNumberOfSeats.Text)) { boat.NumberOfSeats = DBNull.Value; //這裏我收到錯誤 } 我在哪裏錯了? 但是,謝謝你的建議。 乾杯 – JayJay 2009-09-08 04:42:44

+0

int不會轉換爲DBNULL - 您可以嘗試使用「int?」 - 問號使它可以爲空 - 然後當你添加參數到你的命令時,你可以通過邏輯來傳遞DBNull.Value而不是null。 – DataDink 2009-09-08 05:01:37

+0

是的,你的建議對於完成這一步很有用。 非常感謝您的支持。 乾杯 – JayJay 2009-09-08 07:25:29

0

到Int32.Parse(...)的電話時,一個空字符串傳遞給它的失敗。假設那個boat.NumberOfSeats是一個可以爲空的int,你應該只在txtNumberOfSeats.Text不是一個空字符串的時候設置它。

0

可以使用整數的TryParse方法和輸出參數可以使用,因爲沒有座位..

相關問題