engincolak adlı üyeden alıntı: mesajı görüntüle
Merhabalar,
C# form ile bir program geliştiriyorum,
datareader'i kapatmama rağmen bu sorunu aşamıyorum

Şimdiden çok teşekkür ederim yardımlarınız için
Kodları bırakıyorum.
void qrokumavesonra()
        {
            if (pictureBox1.Image != null)
            {
                BarcodeReader barcodeReader = new BarcodeReader();
                Result result = barcodeReader.Decode((Bitmap)pictureBox1.Image);
                if (result != null)
                {
                    textBox1.Text = result.Text;
                    kod = result.Text;
                    //sorgu kısmı
                    try
                    {
                        SqlConnectionClass.CheckConnection();
                        string query = "SELECT CalisanID FROM dbo.QRKodlar WHERE QRKod = @qrKod";
                        using (SqlCommand command = new SqlCommand(query, SqlConnectionClass.sqlConnection))
                        {
                            command.Parameters.AddWithValue("@qrKod", kod); // QR kodunuzun değerini içeren değişken

                            // Komutu çalıştır ve sonucu al
                            object result2 = command.ExecuteScalar();

                            // Sonucun boş olup olmadığını kontrol et
                            if (result2 != null)
                            {
                                int calisanID = Convert.ToInt32(result2);
                                label2.Text = ("QR kodunun ilişkilendiği CalisanID: " + calisanID);

                                string timesorgu = "SELECT * FROM GiriscikisKayitlari WHERE CalisanID = @CalisanID";

                                // İkinci SqlCommand nesnesini burada kullanıyoruz
                                using (SqlCommand timecmd = new SqlCommand(timesorgu, SqlConnectionClass.sqlConnection))
                                {
                                    timecmd.Parameters.AddWithValue("@CalisanID", calisanID);

                                    using (SqlDataReader reader = timecmd.ExecuteReader())
                                    {
                                        if (reader.HasRows)
                                        {
                                            reader.Read();

                                            DateTime? girisZamani = reader["GirisZamani"] as DateTime?;
                                            DateTime? cikisZamani = reader["CikisZamani"] as DateTime?;

                                            if (girisZamani == null)
                                            {
                                                query = "UPDATE GiriscikisKayitlari SET GirisZamani = @GirisZamani WHERE CalisanID = @CalisanID";
                                                timecmd.CommandText = query; // Sorguyu güncelle
                                                timecmd.Parameters.AddWithValue("@GirisZamani", DateTime.Now);
                                                timecmd.ExecuteNonQuery();
                                                label3.Text = "Giriş yapıldı.";
                                            }
                                            else if (cikisZamani == null)
                                            {
                                                query = "UPDATE GiriscikisKayitlari SET CikisZamani = @CikisZamani WHERE CalisanID = @CalisanID";
                                                timecmd.CommandText = query; // Sorguyu güncelle
                                                timecmd.Parameters.AddWithValue("@CikisZamani", DateTime.Now);
                                                timecmd.ExecuteNonQuery();
                                                label3.Text = "Çıkış Yapıldı";
                                            }
                                            else
                                            {
                                                query = "INSERT INTO GiriscikisKayitlari (CalisanID, GirisZamani) VALUES (@CalisanID, @GirisZamani)";
                                                timecmd.CommandText = query; // Sorguyu güncelle
                                                timecmd.Parameters.Clear(); // Önceki parametreleri temizle
                                                timecmd.Parameters.AddWithValue("@CalisanID", calisanID);
                                                timecmd.Parameters.AddWithValue("@GirisZamani", DateTime.Now);
                                                timecmd.ExecuteNonQuery();
                                                label3.Text = "İkisi de dolu, giriş yapıldı";
                                            }
                                            // SqlDataReader'ı kapatın
                                            reader.Close();
                                        }
                                        else
                                        {
                                            query = "INSERT INTO GiriscikisKayitlari (CalisanID, GirisZamani) VALUES (@CalisanID, @GirisZamani)";
                                            timecmd.CommandText = query; // Sorguyu güncelle
                                            timecmd.Parameters.Clear(); // Önceki parametreleri temizle
                                            timecmd.Parameters.AddWithValue("@CalisanID", calisanID);
                                            timecmd.Parameters.AddWithValue("@GirisZamani", DateTime.Now);
                                            timecmd.ExecuteNonQuery();
                                            label3.Text = "İlk giriş yapıldı";
                                            // SqlDataReader'ı kapatın
                                            reader.Close();
                                        }
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Hata oluştu: " + ex.Message);
                    }
                }
            }
        }
If bloklarından kaldırıp aşağıdaki yapıda kullanmayı deneyin.
using (SqlDataReader reader = timecmd.ExecuteReader())
{
    .....
    reader.Close();
}