List<DataColumn> dataClmnList = new List<DataColumn>(); for( int i = 0; i < myDR.FieldCount; i ++ ) dataClmnList.Add( new DataColumn( myDR.GetName(i), myDR.GetFieldType(i) ) ); DataTable myDT = new DataTable(); for( int i = 0; i < myDR.FieldCount; i ++ ) myDT.Columns.Add( dataClmnList[i] ); int iCntr = 0; while (myDR.Read()) { myDT.Rows.Add(); for (int i = 0; i < myDR.FieldCount; i++) myDT.Rows[iCntr][i] = myDR.GetValue(i); iCntr++; } dgvDataReader.DataSource = myDT;The complete code could be as following (just for test):
string mySqlCnStr = @"Data Source=.\SQLEXPRESS;Initial Catalog=myDataReader;Integrated Security=True"; using (SqlConnection mySqlCn = new SqlConnection(mySqlCnStr)) { SqlCommand mySqlCmd = new SqlCommand("select * from myTable", mySqlCn); mySqlCn.Open(); SqlDataReader myDR = mySqlCmd.ExecuteReader(); // Now just it uses myDR - DataReader List<DataColumn> dataClmnList = new List<DataColumn>(); for( int i = 0; i < myDR.FieldCount; i ++ ) dataClmnList.Add( new DataColumn( myDR.GetName(i), myDR.GetFieldType(i) ) ); DataTable myDT = new DataTable(); for( int i = 0; i < myDR.FieldCount; i ++ ) myDT.Columns.Add( dataClmnList[i] ); int iCntr = 0; while (myDR.Read()) { myDT.Rows.Add(); for (int i = 0; i < myDR.FieldCount; i++) myDT.Rows[iCntr][i] = myDR.GetValue(i); iCntr++; } dgvDataReader.DataSource = myDT; mySqlCn.Close(); }Hope this one helps