【问题标题】:Set date field to null将日期字段设置为空
【发布时间】:2011-05-10 06:18:13
【问题描述】:

我正在尝试在 MS SQL Server 2005 数据库中将日期字段设置为空。

我在 asp 页面上使用 VBScript。

数据库中的列允许空值。但是,当我尝试添加一条记录而不将任何内容传递给日期字段时,或者尝试将字段设置回 Null 时,我收到此错误:

提供程序错误“80020005”

类型不匹配。

/add_client_notes.asp,第 142 行

第 142 行是:rs("client_notes_duedate") = client_notes_duedate

所有代码如下:

<% 
    clientnotes_id = request("clientnotes_id")
    client_notes_duedate = request("client_notes_duedate")
    if client_notes_duedate = "" then
        client_notes_duedate = Null
    end if

    openSQL("SELECT * FROM client_notes WHERE client_notes_id=" & clientnotes_id)
    rs("client_notes_duedate") = client_notes_duedate
    rs.update

%>

我尝试发送一个空值和一个 NULL 值,但都返回相同的错误。

当我发送日期值时效果很好。

如何将 client_notes_duedate 设置回 NULL?

【问题讨论】:

  • 哇,对不起,我刚刚发现了我真正的问题。我用来发布到这个脚本的 ajax 函数指向一个较旧的 asp 文件,而不是我正在编辑的那个,原始问题中的代码实际上是有效的。再次抱歉,非常感谢您愿意尝试解决我的问题。我应该如何分配分数/哪种解决方案最好接受?

标签: sql-server sql-server-2005 tsql vbscript asp-classic


【解决方案1】:

你能把这段代码重构成:

execSomeSqlStatement("UPDATE client_notes SET client_notes_duedate = NULL 
 WHERE client_notes_id=" & clientnotes_id)

也许再重构一点以避免 SQL 注入漏洞?

【讨论】:

  • 它现在不会抛出错误,但不会覆盖数据库中的值,更新后它们保持不变。
  • 查看我关于解决方案的问题下的评论。
  • @Dale;嘿没问题。您更喜欢单个语句(一个 UPDATE)而不是 3 个语句(SELECT、字段更新和 rs.update)?
猜你喜欢
  • 2019-08-19
  • 2021-11-30
  • 1970-01-01
  • 2016-09-29
  • 2011-11-12
  • 1970-01-01
  • 2013-04-15
  • 2016-01-03
相关资源
最近更新 更多