There is already an open DataReader associated with this Command which must be closed first.( رسالة الخطاء )
ما اريده في الكود الأسفل هو ارجاع رقم الطالب وعمل عليه باسورد لرقم عشوائي بجانب كلمة
بحيث كل طالب له رقم لوحده ولكن بشكل عشوائي ابتداء من سجل حتى أخرى سجل في حالة
لو كان هناك سجلات
public int RandomNumber(int min, int max)
{
Random rand = new Random();
return rand.Next(min, max);
}
public void setPasswordStudents()
{
int count = 0;
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
using (SqlCommand cmd1 = new SqlCommand())
{
cmd1.Connection = con;
cmd1.CommandText = " select count(*) from Students";
con.Open();
count = (int)cmd1.ExecuteScalar();
con.Close();
}
if (count > 0)
{
using (SqlCommand cmd2 = new SqlCommand())
{
cmd2.Connection = con;
cmd2.CommandText = "select SID from Students";
con.Open();
SqlDataReader r = cmd2.ExecuteReader();
SqlCommand cmd = new SqlCommand();
while(r.Read()) {
cmd.Connection = con;
cmd.CommandText = "Update Students set PasswordStudent='ASHWAQ' WHERE SID=@SID;";
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@random", "ASHWAQ" + RandomNumber(10,50));
cmd.Parameters.AddWithValue("@SID", r["SID"]);
cmd.ExecuteNonQuery();
}
con.Close();
}
}
}
}جزاكم الله الف خير ،،
هو يطلب مني اغلاق SqlDataReader
قبل تنفيذ الأمر cmd.executeNonQuery
فلما اغلقه هناك لوب يرجع فيلقى SqlDataReader مغلق
فتظهر هذه الرسالة لما اغلقه قبل cmd.executeNonQuery
Invalid attempt to call Read when reader is closed
اي فكرة ممكن تحل المشكلة تغيير جذري في الكود أنا على الرحب والسعه بس تحل المشكلة جد تعبت