PDA

View Full Version : data reader



mirshakkeh
جمعه 19 تیر 1388, 10:15 صبح
سلام
وقتی کد زیر رو اجرا می کنم برنامه این خطا را می دهد.

Invalid attempt to Read when reader is closed

و می خوام تمام افرادی که فرضا دارای سابقه ی 1 سال هستند در دیتا گرید نمایش بده. فکر کنم کدی که داخل حلقه ی if هست اشتباه باشه.لطفا راهنمایی کنید.


SqlDataReader reader;
adapter.SelectCommand = new SqlCommand();
adapter.SelectCommand.Connection = sc;
adapter.SelectCommand.CommandText = "select empdate from employee ";
sc.Open();
reader = adapter.SelectCommand.ExecuteReader();
while (reader.Read())
{
s = reader["empdate"].ToString();
sc.Close();
year = Convert.ToInt16(s.Substring(0, 4));
year = (dt.Year - year) - 621;
enter = Convert.ToInt16(textBox1.Text);
if (year == enter)
{
DataSet ds = new DataSet();
//sc.ConnectionString = "data source=.\\SQLEXPRESS;Initial catalog=employee_db;integrated security=true";
adapter.SelectCommand = new SqlCommand();
adapter.SelectCommand.Connection = sc;
adapter.SelectCommand.CommandText = "SELECT * FROM sabegheh ";
//adapter.SelectCommand.Parameters.AddWithValue("@a", textBox2.Text);
sc.Open();
adapter.Fill(ds, "s1");
sc.Close();
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "s1";
}
else if (year != enter)
MessageBox.Show("کارمندی بااین سابقه وجود ندارد", "هشدار", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
reader.Close();

Reza_Yarahmadi
جمعه 19 تیر 1388, 10:31 صبح
به این دلیله که قبل از تموم شدن خوندن از یانک ، Connection رو میبندید


while (reader.Read())
{
s = reader["empdate"].ToString();
sc.Close();
year = Convert.ToInt16(s.Substring(0, 4));
year = (dt.Year - year) - 621;