怎么将null插入数据库int字段(int可为空)

cxy521 2009-10-13 04:55:51
insert into T_ReportType values(@Code,@Name,@ParentID,@IsEmploy,@Remark)
这是我C#页面的插入语句,其中
public int? ParentID
{
get { return this.parentID; }
set { this.parentID = value; }
}
eReportType.ParentID = null;
paras.Add("ParentID", SqlDbType.Int).Value = eReportType.ParentID;
跟踪数据库SQL语句
insert into T_ReportType values(@Code,@Name,@ParentID,@IsEmploy,@Remark)',N'@Code varchar(64),@Name varchar(64),@ParentID int,@Remark varchar(256),@IsEmploy bit',@Code='05',@Name='05',@ParentID=default,@Remark='05',@IsEmploy=1
数据插入失败,求大虾指点!!!!

...全文
738 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
PinoPino 2010-01-20
  • 打赏
  • 举报
回复
我重现你了的错误 但是有点不明白啊 你为什么就盯着profile里的错误提示呢 vs中也抛出了异常的呀
需要xxx参数但是未提供该参数
一个解决办法是不要用参数化的查询 你可以改成这样 "insert into student values('"+s.name+"','"+s.age+"')" 这是可以的
再一种就是在paras.Add("ParentID", SqlDbType.Int).Value = eReportType.ParentID; z这一步进行判空的处理 写一个3元表达式吧 xxx.value=eReportType.ParentID==null?"为空时你要提供的值":eReportType.ParentID;
希望对你有所帮助吧
cxy521 2009-10-13
  • 打赏
  • 举报
回复
因为不能确定插入的ParentID一定就是null也有不为null的情况!
cxy521 2009-10-13
  • 打赏
  • 举报
回复
不好意思我简单的补充说明一下
这是属性器
public int? ParentID
{
get { return this.parentID; }
set { this.parentID = value; }
}
这个eReportType是业务实体
eReportType.ParentID = null;
这是执行SQL前赋值
paras.Add("ParentID", SqlDbType.Int).Value = eReportType.ParentID;
这个是执行SQL Server Profiler工具后查看到的数据库实际运行的SQL
insert into T_ReportType values(@Code,@Name,@ParentID,@IsEmploy,@Remark)',N'@Code varchar(64),@Name varchar(64),@ParentID int,@Remark varchar(256),@IsEmploy bit',@Code='05',@Name='05',@ParentID=default,@Remark='05',@IsEmploy=1

其实数据库实际执行的,@ParentID=default 就是这个出错了!
bancxc 2009-10-13
  • 打赏
  • 举报
回复
insert into T_ReportType values(@Code,@Name,@ParentID,@IsEmploy,@Remark)',N'@Code varchar(64),@Name varchar(64),@ParentID int,@Remark varchar(256),@IsEmploy bit',@Code='05',@Name='05',
@ParentID=Null,----------这里
@Remark='05',@IsEmploy=1
xiequan2 2009-10-13
  • 打赏
  • 举报
回复
paras.Add("ParentID", SqlDbType.Int).Value =dbnull.value
SQL77 2009-10-13
  • 打赏
  • 举报
回复
insert into T_ReportType values(@Code,@Name,@ParentID,@IsEmploy,@Remark)',N'@Code varchar(64),@Name varchar(64),@ParentID int,@Remark varchar(256),@IsEmploy bit',@Code='05',@Name='05',@ParentID=default,@Remark='05',@IsEmploy=1

后面不用那些类型了,直接是值
sgtzzc 2009-10-13
  • 打赏
  • 举报
回复
你这个SQL语句让人看的一头雾水
dawugui 2009-10-13
  • 打赏
  • 举报
回复
看不懂你的.插入NULL是:

insert into tb(id) values(null)
SQL77 2009-10-13
  • 打赏
  • 举报
回复
直接赋值为NULL就行,只要数据库字段允许为NULL

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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