我一直努力现在得到这个工作约6小时,不能似乎找到解决方案或在我的代码中的错误...While循环问题,当从SQL数据库检索记录
基本上代码应该选择查看当前日期/时间后2分钟的日期/时间的每个实例,但由于某种原因它只返回一个实例。我尝试了很多方法来解决这个问题,我不可能把它们都写下来。
我有两个方法removedexpiredusers()
和getexpiredusersdate()
。
Getexpiredusersdate()
应该检索添加的每个记录日期/时间并将它们传送到removeexpiredusers()
,应该使用该方法过滤掉当前日期之后两分钟的哪些记录以及是否删除它们。
各得两分删除时间纯粹是为了测试,该计划是要改变这种后给予24小时的用户临时账户一天,以删除用户帐户。
这是到目前为止我的代码任何帮助赞赏
private void removeExpiredUsers()
{
while (DateTime.Now >= getExpiredUsersDate().AddMinutes(2))
{
//remove the user
dal.spDeleteExpiredUsers(getExpiredUsersDate());
}
}
private DateTime getExpiredUsersDate()
{
DateTime date = new DateTime();
try
{
using (SqlDataReader datareader = dal.getUsers())
{
while (datareader.Read())
{
date = ((DateTime)datareader["DateAdded"]);
MessageBox.Show(date.ToString());
}
}
}
catch (SqlException sqlex) { }
catch (Exception ex) { }
return date;
}
编辑
我要去这里包括存储过程也家伙
GetUsers
Create proc spGetUsers
as
Begin
SELECT *
FROM [User]
ORDER BY Username
End
个* spDeleteExpiredUsers
Create proc spDeleteExpiredUsers
@DateAdded datetime
as
Begin
DELETE
FROM [User]
WHERE DateAdded = @DateAdded
End
你应该注释掉所有'try-catch'块,以便我们可以更好地进行调试。 –
但是,消息框显示所有用户或只是一个?因为你只返回最后一个日期,并且只有最后一个日期在执行删除操作的if中被选中 – Steve
@Steve Hi steve,它只显示一个用户,是否应该有一种方法来提供其他日期? –