DataTable kullanmadan DataReader ile DataGridView doldurma

Merhaba,

Birçok sitede aradığım ama bir türlü bulamadığım bir konu vardı. DataReader kullanarak ama bilgisayarımın belleğini de yormadan DataReaderı DataGridView’a nasıl bağlayabilirdim? Birçok yerde bunun yapılamayacağı, bazı yerlerde ise soruyda açıkça belirtilmesine rağmen yine de DataTable’lı çözüm gösteriliyordu. Tabiki birçok durumda DataTable’lı özüm idealdir, ancak bazı durumlarda(büyük data çekilmesi gereken durumlar gibi) DataReader’ı doğrudan gride bağlamak daha performanslı olmaktadır. İşte benim çözümüm:

            SqlCommand cmd = new SqlCommand();
            //other connection stuff
            SqlDataReader dr = cmd.ExecuteReader();
            int columnCount = dr.FieldCount;
            object[] columns = new object[columnCount]; 
            //önce başlıklar(first, we get the headers)
            for (int i = 0; i < columnCount-1; i++)
            {
                this.dataGridView1.Columns.Add(dr.GetName(i), dr.GetName(i));
            }
            //şimdi satırlar(now, time to get rows)
            while (dr.Read())
            {
                for (int i = 0; i < columnCount-1; i++)
                {
                    columns[i] = dr.GetValue(i);
                }
                this.dataGridView1.Rows.Add(columns);
            }

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s