gpt4 book ai didi

c# - 检查 DataReader 是否为空

转载 作者:行者123 更新时间:2023-11-30 19:44:13 25 4
gpt4 key购买 nike

DataReader 为空时,我的代码不运行。下面是我的代码。

我的工作是关于日期安排。我的问题是假期限制。当用户输入日期(开始日期和结束日期)时,程序将检查输入的日期之间是否有任何假期。如果 DataReader 没有任何数据,输入的日期应该被保存,或者如果 DataReader 有数据,那么输入的日期不被保存并且程序给出一个错误信息。

try
{
econ = new SqlConnection();
econ.ConnectionString = emp_con;
econ.Open();
ecmd = new SqlCommand("SELECT CD_Date FROM CONS_DATES where CD_Date between '" + Convert.ToDateTime(dtpStart.Text) + "' and '" + Convert.ToDateTime(dtpEnd.Text) + "'", econ);
ecmd.CommandType = CommandType.Text;
ecmd.Connection = econ;
dr = ecmd.ExecuteReader();
while (dr.Read())
{
DateTime cdname = (DateTime)dr["CD_Date"];

//This code is working
if (Convert.ToDateTime(cdname) >= Convert.ToDateTime(dtpStart.Text) || Convert.ToDateTime(cdname) <= Convert.ToDateTime(dtpEnd.Text))
{
MessageBox.Show("Holiday Constraint. Creating Record Denied.");
} //if

//This code is not working. When the program fetch with no record, it should be continue to add the record but it's not working
else
if (dr == null || !dr.HasRows)
{
//In this area is my code for inserting the entered data.
MessageBox.Show("Add na|!!!. Creating Record Denied.");
}//if else
}//while
}//try
catch (Exception x)
{
MessageBox.Show(x.GetBaseException().ToString(), "Connection Status", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

最佳答案

您的问题是,while 循环仅在 dr 有一个或多个记录时运行。但是,如果 drnull,则 while 循环永远不会运行。

更好的解决方案是使用 System.Data.SqlClient.SqlDataReader

然后检查,

if (!dr.HasRows)
{
// Your code to save the records, if no holidays found
}
else
{
// Your code to show the error message, if there is one or more holidays
}

关于c# - 检查 DataReader 是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13004559/

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