请问如何将数据库datetime字段设置为空?

tttran 2008-01-31 04:25:39
在进行数据库update语句的时候 datetime字段不允许为空(本身有日期)
,设置参数为 dbnull.value 提示类型不匹配,如何才能设置这个字段为空?谢谢。
...全文
5210 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
deknight 2008-01-31
  • 打赏
  • 举报
回复
在设计原则上,应该避免出现允许空的字段
比如日期,默认'',可以在程序设计上判断1900-1-1
数据量大时,null对性能的影响较明显.
tttran 2008-01-31
  • 打赏
  • 举报
回复
数据表设置可以为空,但是update设置为空的时候却提示错误,datetime类型不匹配。
Tensionli 2008-01-31
  • 打赏
  • 举报
回复
日期型字段必须允许为空,然后用UPDATE语句直接更新为NULL
atie888 2008-01-31
  • 打赏
  • 举报
回复
数据表设置不允许空的话,是不可以update为空的
tttran 2008-01-31
  • 打赏
  • 举报
回复
to darkzhan 这个字段不是必填项,像你所说的在insert into 语句不写参数是空的,现在想实现的就是
把不是空的datetime字段设置为空。
conan304 2008-01-31
  • 打赏
  • 举报
回复
在进行数据库update语句的时候 datetime字段不允许为空(本身有日期)
,设置参数为 dbnull.value 提示类型不匹配,如何才能设置这个字段为空?
=========
你是拿矛搓你的盾吗??

-----------------
精辟啊
darkzhan 2008-01-31
  • 打赏
  • 举报
回复 1
数据库这个字段允许为NULL么? 不能的话你不能赋值为NULL的
如果允许,你可以不传这个参数。她默认是NULL
tttran 2008-01-31
  • 打赏
  • 举报
回复
to showrock ,设置为空是因为以前有日期希望可以设置为空,就是删除。
tttran 2008-01-31
  • 打赏
  • 举报
回复
expdate 字段的必填属性是 否。
楼上的意思是 datetime 类型本身有日期?
showrock 2008-01-31
  • 打赏
  • 举报
回复
不用赋值,默认就是null,但不能为空,楼主取的时候判断一下为null就是了,没必要非给赋值为空
  • 打赏
  • 举报
回复
在进行数据库update语句的时候 datetime字段不允许为空(本身有日期)
,设置参数为 dbnull.value 提示类型不匹配,如何才能设置这个字段为空
=========
你是拿矛搓你的盾吗??
tttran 2008-01-31
  • 打赏
  • 举报
回复
先感谢各位,我设置为 null 提示错误:Message: 未将对象引用设置到对象的实例。 以下是代码
/// <summary>
/// 根据当前alFieldItem数组中存储的字段/值和条件表达式所指定的条件来更新数据库中的记录,返回所影响的行数。
/// </summary>
/// <param name="_tableName">要更新的数据表名称。</param>
/// <returns>返回此次操作所影响的数据行数。</returns>
public int Update(string _tableName)
{
this.tableName = _tableName;
this.fieldName = string.Empty;
this.SqlCmd = "update " + this.tableName + " set ";
for (int i = 0; i < this.alFieldItems.Count - 1; i++)
{
this.SqlCmd += ((DbKeyItem)alFieldItems[i]).fieldName;
this.SqlCmd += "=";

this.SqlCmd += "@para";
this.SqlCmd += i.ToString();

this.SqlCmd += ",";
}
this.SqlCmd += ((DbKeyItem)alFieldItems[alFieldItems.Count - 1]).fieldName;
this.SqlCmd += "=";

this.SqlCmd += "@para";
this.SqlCmd += (alFieldItems.Count - 1).ToString();


if (this.ConditionExpress != string.Empty)
{
this.SqlCmd = this.SqlCmd + " where " + this.ConditionExpress;
}
this.cmd.CommandText = this.SqlCmd;
this.GenParameters();
int effectedLines = this.cmd.ExecuteNonQuery();
return effectedLines;
}


=========================================
private void AddField(ref XkCms.DataOper.Data.DbOperHandler doh)
{
doh.Reset();
doh.AddFieldItem("expdate", null); //这一行提示错误,如果写dbnull.value 则提示datetime类型不匹配

TNT_1st_excellence 2008-01-31
  • 打赏
  • 举报
回复
如LS讲的,不可能是空,有默认值的
hbx1982 2008-01-31
  • 打赏
  • 举报
回复
先确认一下你数据库的表中,该日期字段是否允许为空。
deknight 2008-01-31
  • 打赏
  • 举报
回复
不允许空,那就一定空不了...默认''的话是1900-1-1
所以你怎么也空不了
北京的雾霾天 2008-01-31
  • 打赏
  • 举报
回复
datetime字段不允许为空

还是设置为空?
lucky749 2008-01-31
  • 打赏
  • 举报
回复
update Yourdatetime=null where............
xuyuanshh 2008-01-31
  • 打赏
  • 举报
回复
直接update xxx=null就行了。
conan304 2008-01-31
  • 打赏
  • 举报
回复
没看懂lz的意思

--alter??
Alter table tableName
ALter column columname datetime

--或者加default??
alter table tableName
add default getdate() for columnName

--update??
update tableName
set columnName=null
where .....
wxg22526451 2008-01-31
  • 打赏
  • 举报
回复
同意楼上的
加载更多回复(1)

111,118

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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