【发布时间】:2012-08-10 07:23:13
【问题描述】:
我正在为这项工作做一个小申请,其中包括一个表格。当使用表单的人没有在数据类型“数字”(比如说 PIN 码)中输入值,甚至没有在我的“日期”数据类型字段之一中输入日期(比如说他的周年纪念日)时,它会返回给我错误如下:
错误类型 – 错误类型 _用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序 (0x80004005)_ 错误:数字类型的输入语法无效:“”;执行查询时出错
错误类型 – 错误类型 _用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序 (0x80004005)_ 错误:“)”处或附近的语法错误;执行查询时出错
所以看起来当使用表单的人什么都不输入时,它返回字符串“empty”,即“”。 为什么数字类型和数据类型不能将其读取为 NULL 条目?这些字段不是强制性的,因此有时我需要将它们留空。
我怎样才能使它成为可能?他们是一种继续使用“数字”和“日期”类型的方法,以便当用户在这些字段中不输入任何内容时,表格会填充一个空白大小写,指示给我这个错误?
这是我的sql语句:
trsConn.EXECUTE "INSERT INTO ""TRS"".employeetbl ( "& _
"""firstName"", " & _
"""lastName"" , " & _
"""detContract"", " & _
"sle, " & _
"""posNumber"" "& _
") VALUES (" & _
"'" & Request.Form("empFirst") & "', " & _**
"'" & Replace(Request.Form("empLast"), "'", "`") & "', " & _
"'" & Request.Form("dateContract") & "', " & _
"'" & Request.Form("sle") & "', " & _
"'" & Request.Form("posNum") & "');"
(posNum 和 dateContract 分别属于“numeric”和“date”类型
非常感谢您的帮助。期待听听各位天才的说法。
【问题讨论】:
-
哇。 “ASP 经典”是否支持占位符或准备好的语句?我怀疑 一个 的问题是它正在对数据进行插值,所以它最终会像
.. VALUES (.., 'NULL', ..)而不是应该是.. VALUES (.., NULL, ..)。 -
另外,为什么
posNum使用’(一个有趣的单引号,这是错误的)而其他人使用'(撇号,这是正确的)?您可以为posNum输入any 值吗? (也就是说,标题是红鲱鱼吗?) -
这是经典的'"" 不等于NULL'。 NULL 永远不等于任何东西,你不能用任何东西代替它(好吧,我不能说永远 - Oracle 多年来一直是个例外)。如果要分配
NULL,请分配NULL。如果要查看某列是否为NULL,请使用IS NULL;他们有IsNull()和Coalesce()专门用于处理NULL值——这就是为什么他们有特殊的功能和一个操作员来检查它。NULL其他,没有其他 =NULL. -
@pst:我很确定它使用的是
''而不是'NULL',它应该只使用文字NULL。 -
顺便说一句,使用经典 SQL 驱动程序的 ASP 确实支持准备好的语句:stackoverflow.com/questions/8538979/…。文斯,请考虑使用准备好的语句,为了可读性,为了你周围所有人的理智,为了可怜的 Bobby Tables xkcd.com/327
标签: postgresql asp-classic vbscript postgresql-9.0