我想在用户未提供日期输入时传递空值。我传递的是null,但是当它显示时显示为1/1/1900 12:00:00 AM
FollowUpDate
字段为datetime
数据类型
if (txtFollowupDate.Text !="")
{
cmd.Parameters.AddWithValue("@FollowUpDate", FollowUpDate);
}
else
{
cmd.Parameters.AddWithValue("@FollowUpDate", "");
}
答案 0 :(得分:3)
您应该使用空值而不是空字符串:
if (txtFollowupDate.Text !="")
{
cmd.Parameters.AddWithValue("@FollowUpDate", FollowUpDate);
}
else
{
cmd.Parameters.AddWithValue("@FollowUpDate", DBNull.Value);
}
答案 1 :(得分:1)
您没有传递null,而是传递空字符串,该字符串会转换为INSERT INTO sqitable(sqi_test)
SELECT sqi_main
FROM Middleman24
WHERE ISNUMERIC(sqi) = 1
AND sqi <> ''
。
您应该使用1/1/1900 12:00:00 AM
代替。
修改强>
你确定你不是这样的意思吗?
DBNull.Value
我只是想知道if (txtFollowupDate.Text !="")
{
cmd.Parameters.AddWithValue("@FollowUpDate", txtFollowupDate.Text);
}
变量的来源。
答案 2 :(得分:0)
在与数据库交互的情况下,您应该添加DBNull.Value而不是null。
您可以使用以下扩展方法来完成此操作。
public static void AddValueorDefaultToParams(this SqlCommand cmd, string paramName, string value)
{
if (!string.IsNullOrEmpty(paramName))
{
if (!string.IsNullOrEmpty(value))
{
cmd.Parameters.AddWithValue(paramName, value);
}
else
{
cmd.Parameters.AddWithValue(paramName, DBNull.Value);
}
}
}
用法
cmd.AddValueorDefaultToParams("@FollowUpDate", FollowUpDate);