0

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

1 回答 1

0

仅当其中有数据时才添加可选DateTime参数。

例如:

if(!string.IsNullOrWhiteSpace(a.wtyEndDate))
{
    AddParameter("@wtyEndDate", a.wtyEndDate);
}
于 2012-04-25T10:20:49.673 回答