Asp.net 列名“allocationStart”无效
无论出于何种原因,在尝试执行查询时,我都会遇到错误Invalid column name allocationStart。这在dateadd函数中,该列确实存在于数据库中。这是约会时间 以下是查询:Asp.net 列名“allocationStart”无效,asp.net,sql,Asp.net,Sql,无论出于何种原因,在尝试执行查询时,我都会遇到错误Invalid column name allocationStart。这在dateadd函数中,该列确实存在于数据库中。这是约会时间 以下是查询: cmd.commandText = "Insert Into EmpPac (catalogIdent, empPacIdent, empIdent, allocation, quantityLimit, qu
cmd.commandText = "Insert Into EmpPac
(catalogIdent, empPacIdent, empIdent, allocation,
quantityLimit, quantityIssued, quantityShipped,
allocationMonths, sizeChartIdent, sizeNotes, nextUpdate)
values ( '" & catalogIdent & "', '" & intvalue_EmpPak
& "', '" & empIdent & "',"&jobQuantityLimit&",'"
&jobQuantityLimit&"', '0', '0',"&
allocationMonths&", '"& sizeChartident &
"', '', DATEADD(month, "&allocationMonths&
", allocationStart))"
cmd.execute
您没有指定allocationstart所在的表
您需要使INSERT源成为源表中的SELECT,而不是使用VALUES关键字,因为这需要一个显式值列表
例如:
INSERT INTO MyTargetTable
SELECT <stuff>, DATEADD(month, XXX, allocationstart)
FROM MySourceDataTable
老实说,我不是百分之百地理解你的问题,但是我想我理解你想做什么 原始错误源自DATEADD命令 DATEADD的第三个参数是要操作的datetime值 我猜您的allocationStart列会在DB中自动设置当前日期时间,并将该列传递给DATEADD函数以对其进行操作,并将返回值插入nextUpdate列。如果您正试图这样做,则在提交行之前,auto datetime列将无法设置为返回日期/时间等,因此您不能从INSERT语句中使用函数中的auto=生成列 我还强烈建议你看看准材料,它更安全,更好的做法
如果您在nextUpdate列的月数之后,可以使用DateTime.Now.month并将其附加到SQL字符串中。首先,您的查询在Management studio中有效吗?然后,使用SqlParameter而不是字符串cacatenation,因为很多原因,特别是你不必处理参数类型,而且你可以避免Sql注入攻击。你确定这是ASP.NET而不是经典的ASP吗?你真的需要查找数据库的排序规则吗?顺便说一下,insert语句的VALUES部分不允许使用列名。有效表达式是常量、常量表达式,在某些上下文中是变量