TableAdapter 的非 string 类型字段为什么为空会引发异常?

xmlcss 2007-06-14 04:03:48
我的表里面有一个 可空的 关联到另外一个表的主健 的字段 类型为 int
但是在这个字段的属性里面 NullValue 的值是 (Throw exception)
也就是一旦为空就引发异常
我试图设置为 (Null) 但VS 报错 说只有 string 类型才能为空
我的 vs 版本为 2005 安装了 Sp1 补丁
...全文
406 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
emanlee 2007-08-30
  • 打赏
  • 举报
回复
请看我的blog

http://www.cnblogs.com/emanlee/archive/2007/08/30/876057.html
emanlee 2007-08-30
  • 打赏
  • 举报
回复
关注......
xmlcss 2007-06-15
  • 打赏
  • 举报
回复
to: Jinglecat(晓风残月)

我是想让他为可空类型

但是这些代码是 VS 生成的 无法修改
Jinglecat 2007-06-14
  • 打赏
  • 举报
回复
public int ParentDepartmentID {
get {
try {
return ((int)(this[this.tableDepartment.ParentDepartmentIDColumn]));
}
catch (System.InvalidCastException e) {
throw new System.Data.StrongTypingException("表“Department”中列“ParentDepartmentID”的值为 DBNull。", e);
}
}

-------------------------
1.
值类型,如int ,double,是无法为其指定空值( null )

2.
如果你这里程序中的类型是 int,那么当数据库为 DBNull 的时候,你只有返回一个与 DBNull 对应的值来表示,如 -1, 那么后续程序碰到 -1 的时候,你就要注意,这是一个特殊的值,表示数据库的 NULL

public int ParentDepartmentID {
get {
try {
object o = this[this.tableDepartment.ParentDepartmentIDColumn];
return (o is DBNull) ? -1 : (int)o;
}
catch (System.InvalidCastException e) {
throw new System.Data.StrongTypingException("表“Department”中列“ParentDepartmentID”的值为 DBNull。", e);
}


3。
如果是 .net 2.0,那么你可以考虑使用可空类型

public int? ParentDepartmentID {
get {
try {
object o = this[this.tableDepartment.ParentDepartmentIDColumn];
return (o is DBNull) ? null : (int)o;
}
catch (System.InvalidCastException e) {
throw new System.Data.StrongTypingException("表“Department”中列“ParentDepartmentID”的值为 DBNull。", e);
}
MaWenkun 2007-06-14
  • 打赏
  • 举报
回复
设默认值,数据设为0 ,字符设为 ''
大飞飞虫 2007-06-14
  • 打赏
  • 举报
回复
不可以,为0吧
gcaling2006 2007-06-14
  • 打赏
  • 举报
回复
INT类型应不能空的。
重典 2007-06-14
  • 打赏
  • 举报
回复
使用可空类型
type? val;
lengnuanjingmo 2007-06-14
  • 打赏
  • 举报
回复
up
Lcindep110 2007-06-14
  • 打赏
  • 举报
回复
try {
object o = this[this.tableDepartment.ParentDepartmentIDColumn];
if(o == null || o == DBNull.Value)
return 0;

return (int)o);
}
xmlcss 2007-06-14
  • 打赏
  • 举报
回复
他生成的代码是这样

public int ParentDepartmentID {
get {
try {
return ((int)(this[this.tableDepartment.ParentDepartmentIDColumn]));
}
catch (System.InvalidCastException e) {
throw new System.Data.StrongTypingException("表“Department”中列“ParentDepartmentID”的值为 DBNull。", e);
}
}

但数据库中ParentDepartmentID 是可空的
xmlcss 2007-06-14
  • 打赏
  • 举报
回复
但是我是直接绑到 数据源上的 dRow.IsXXXNull()?v1:v2 加在那里

DBNull.Value?这个在那里修改

我就想如何把那个字段设置为可空类型
jinjazz 2007-06-14
  • 打赏
  • 举报
回复
读取的时候判断一下就可以了

dRow.IsXXXNull()?v1:v2
北京的雾霾天 2007-06-14
  • 打赏
  • 举报
回复
你可能需要使用
DBNull.Value

而不是
null.
xmlcss 2007-06-14
  • 打赏
  • 举报
回复
type? val; 如何使用?
我改了几次都说格式不对

不能用默认值为0

应该这个字段要关联到另外一个表的主键
如果为0显然是不行的

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧