问题
用C#和SqlServer进行数据库开发时,遇到一个问题,在数据库中,外键列是long类型,并且有可能为空,这时候如果值是null,C#用long在取数据库的外键时候,就会报错.
解决办法.
1.varchar或nvarchar
将可以为空的外键列设置成字符串类型varchar或nvarchar. 这种方法优点是简单通用,缺点是在C#中取值的时候需要多一次判断,该值是否为数字.
2.int?或long?
据库类型为int或long,并且可空,在C#中使用int?或long?类型来取这个字段,int?的意思是在int的基础上,可以将null值赋给int变量,long?同理,在存long值的同时,可以将null值存进long类型的变量中.
样例
int? rowid = reader["rowid"];
if (rowid != null) { Object o = new ObjectManager().getObjectByID(rowid); }
else { Object o = null; }
有空再补充详细点,转载请注明,谢谢.