我正在尝试从数据库中选择一个用户列表,并根据条件 isSent == false 向每个用户发送电子邮件。向他们发送电子邮件后,此 false 的值应更新为 true。下面的代码是我从数据库中检索用户列表并向每个用户调用方法 sendEmail() 的方式。
myConnection.Open();
//*******
try
{
SqlDataReader myReader = null;
string sql = "SELECT * FROM testTable where isSent = false";
SqlCommand myCommand = new SqlCommand(sql, myConnection);
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
sendEmail(myReader["emailAdd"].ToString(),
myReader["UserID"].ToString());
}
第二部分:
public static void sendEmail(string emailAdd,string userID){
.
.
.
try
{
smtpClient.Send(mail);
try
{
string sql = "UPDATE testTable SET isSent = 1 WHERE UserID = " + userID;
SqlCommand myCommand = new SqlCommand(sql, myConnection);
int rows = myCommand.ExecuteNonQuery();
.
.
.
}
}
}
我面临的问题是,由于从主要方法开始,我已经拥有 SqlDataReader 可以读取,所以我现在无法更新。有什么适合我的工作吗?我得到的错误信息如下:
There is already an open DataReader associated with this Command which must be closed first.