C# 使maskedtextbox从SqlDataReader读取NULL
我有一个简短的代码,我用它将数据读入maskedtextbox,然后(这不是代码的一部分)通过C# 使maskedtextbox从SqlDataReader读取NULL,c#,sql,sql-server,sqldatareader,sqlcommand,C#,Sql,Sql Server,Sqldatareader,Sqlcommand,我有一个简短的代码,我用它将数据读入maskedtextbox,然后(这不是代码的一部分)通过SqlCommand SqlCommand novyprikaz = new SqlCommand("SELECT * FROM zajezd WHERE akce=" + tentoradek, spojeni); spojeni.Open(); SqlDataReader precti = novyprikaz.ExecuteReader();
SqlCommand
SqlCommand novyprikaz = new SqlCommand("SELECT * FROM zajezd WHERE akce=" + tentoradek, spojeni);
spojeni.Open();
SqlDataReader precti = novyprikaz.ExecuteReader();
if (precti.Read())
{maskedTextBox2.Text = precti.GetDateTime(24).ToShortDateString(); // i need to improve this part
}
但要知道,如果maskedTextBox2
值为空,则会出现以下错误:
数据为空。无法对空值调用此方法或属性
我想问你,我应该用这个代码做什么改变,使它读空?
提前谢谢
这是我用来为插入到
中所做的代码片段,它被标记为答案。使用第24列上的检查SqlDataReader是否包含DBNull值,并适当地返回空字符串或NOTNULL值
if (precti.Read())
{
maskedTextBox2.Text = precti.IsDBNull(24) ?
string.Empty :
precti.GetDateTime(24).ToShortDateString();
}
非常感谢您的回答,但它给了我一个错误:在没有数据存在的情况下读取的尝试无效。这很奇怪,因为如果read方法返回true,那么您已经在第一行提升了读卡器,这意味着存在一条记录。然后IsDBNull检查该列是否不包含值,只有当返回false时,代码才会尝试读取第24列。在这些行之前是否有其他代码可以更改预期的行为?