如果为空,则无法保存整数

时间:2009-09-08 03:40:36

标签: c# sql-server wpf linq-to-sql

我正在开发一个表单以在数据库中插入数据(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...

现在当我在表单中插入一条新记录时,如果我留空了TextBox“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;

您是否有任何建议可以解决此问题?

非常感谢

干杯

3 个答案:

答案 0 :(得分:2)

保存到数据库时,可以在数据访问层上传递null。 例如尝试这样的事情:

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

答案 1 :(得分:0)

对空字符串传递给Int32.Parse(...)时,调用失败。如果boat.NumberOfSeats是一个可以为null的int,则只应在txtNumberOfSeats.Text不是空字符串时设置它。

答案 2 :(得分:0)

你可以使用整数tryParse方法和输出参数可以作为座位使用..