gpt4 book ai didi

c# - SQL Server 日期时间接受 NULL

转载 作者:太空狗 更新时间:2023-10-29 18:08:27 25 4
gpt4 key购买 nike

我已尝试使我的代码尽可能紧凑。

使用 Microsoft SQL Server、.NET 2.0

我的数据库中有一个接受空值的日期字段

LeaseExpiry(datetime, null)

我获取文本框的值并将其转换为日期时间。

DateTime leaseExpiry = Convert.ToDateTime(tbLeaseExpiry.Text);

INSERT_record(leaseExpiry);

我遇到的问题是表单已提交但文本框为空。我收到此错误:

String was not recognized as a valid DateTime.

如何设置我的代码,以便在文本框为空时,在数据库中创建的行为 NULL

我尝试将我的变量初始化为 NULL,但在 Visual Studio 中出现错误

DateTime leaseExpiry = null;

Cannot convert null to 'System.DateTime' because it is a non-nullable value type.

如果有帮助,这里是数据访问层

public string INSERT_record(DateTime leaseExpiry)
{
//Connect to the database and insert a new record
string cnn = ConfigurationManager.ConnectionStrings[connname].ConnectionString;

using (SqlConnection connection = new SqlConnection(cnn))
{
string SQL = string.Empty;
SQL = "INSERT INTO [" + dbname + "].[dbo].[" + tblAllProperties + "] ([LeaseExpiry]) VALUES (@leaseExpiry);

using (SqlCommand command = new SqlCommand(SQL, connection))
{
command.Parameters.Add("@leaseExpiry", SqlDbType.DateTime);
command.Parameters["@leaseExpiry"].Value = leaseExpiry;
}

try
{
connection.Open();
command.ExecuteNonQuery();
return "Success";
}
catch (Exception ex)
{
return ex.Message;
}
}
}

谢谢

最佳答案

确实,DateTime 不能为null。但是:DateTime? 可以。另请注意,在参数上,null 表示“不发送”;你需要:

public string INSERT_record(DateTime? leaseExpirey)
{
// ...
command.Parameters.Add("@leaseExpirey", SqlDbType.DateTime);
command.Parameters["@leaseExpirey"].Value =
((object)leaseExpirey) ?? DBNull.Value;
// ...
}

关于c# - SQL Server 日期时间接受 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14521760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com