我有一个网站,其中有一些文本框,这些文本框仅在特定条件下可见。这些文本框绑定到日历扩展器。但是,只要不可见,这些文本框就会将空字符串传递给数据库。它们在表中对应的数据类型是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