我有一个网页,有几个文本框只有在某些条件下才能看到。这些文本框绑定到日历扩展程序。但是,只要不可见,这些就会将空字符串传递给数据库。它们在表中的相应数据类型为datetime
。存储这些空字符串时,它们将转换为1/1/1900 12:00:00 AM
。我怎样才能在这里存储空值?
我是否需要将数据类型更改为其他内容?
我正在使用datetime
因为我需要稍后执行一些比较操作。
相关代码在这里。
public class Asset
{
public string dbStatus { get; set; }
public string wtyEndDate { get; set; }
public string amcEndDate { get; set; }
public Asset()
{
dbStatus = default(String);
wtyEndDate = default(String);
amcEndDate = default(String);
}
}
protected void btnSaveAsset_Click(object sender, EventArgs e)
{
Asset a = new Asset();
a.wtyEndDate = txtWtyEndDate.Text;
a.amcEndDate = txtAmcEndDate.Text;
string msg = "";
if (a.dbStatus == "INSERT")
{
try
{
msg = (ab.EXE_Assets_Master(a).Rows.Count>0) ? "Record Inserted"; : "Error"
}
catch (Exception)
{
msg = "Record with this service tag already exists in the database";
}
}
}
protected DataTable _EXE_Asset_Details(Asset a)
{
Parameters.Clear();
AddParameter("@wtyEndDate", a.wtyEndDate);
AddParameter("@amcEndDate",a.amcEndDate);
AddParameter("@DBStatus", a.dbStatus);
return ExecuteDataSet("[Asset_Details]").Tables[0];
}
// Asset_Details
CREATE PROCEDURE [Asset_Details]
@wtyEndDate datetime = NULL,
@amcEndDate datetime =null,
@dbStatus nvarchar(50)
AS
IF(@DBStatus='INSERT')
BEGIN
INSERT INTO [assetsMaster]
([warrantyEndDate],[amcEndDate])
VALUES
( @wtyEndDate,@amcEndDate)
SELECT @@rowcount
END
答案 0 :(得分:0)
如果参数中包含数据,则只添加可选的DateTime
参数。
例如:
if(!string.IsNullOrWhiteSpace(a.wtyEndDate))
{
AddParameter("@wtyEndDate", a.wtyEndDate);
}