title: Specified cast is not valid
body: <pre><code>            SqlDataReader reader;
              string r="C:\\Users\\Shivam\\Documents\\";
              if ((FileUpload1.PostedFile != null)&amp;&amp;(FileUpload1.PostedFile.ContentLength &gt; 0))
              {
                  r += System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName);
  
              }
  
              OleDbConnection oconn =
                new OleDbConnection
                  (@"Provider=Microsoft.Jet.OLEDB.4.0;"
                   + "Data Source="+r+";"
                   + @"Extended Properties=""Excel 8.0;HDR=Yes;""");
              oconn.Open();
              conn.Open();
              OleDbCommand dbcom = new OleDbCommand("SELECT * FROM [Sheet1$]", oconn);
              OleDbDataReader dbreader = dbcom.ExecuteReader();
  
              //dbread = dbreader;
              int rni = dbreader.GetOrdinal ("RollNo");
              int mki = dbreader.GetOrdinal ("marks");
              int rowcount =0;
              while(dbreader.Read())
              { rowcount++; }
              //dbreader.Close();
              //OleDbDataReader dbread = dbcom.ExecuteReader();
              int[] rn = new int[rowcount];
              int[] gr = new int[rowcount];
  
  
              while (dbreader.Read())
              {
  
                  int o = 0;
                  for(int i=0;i&lt;rowcount;i++)
                  {
                      int q = (int)dbreader.GetValue(rni);
                      int p = (int)dbreader.GetValue(mki);
                      rn[i] = q;
                      gr[i] = p;
                      //roll[i] = valid(odr, 0);//Here we are calling the valid method
                      //marks[i] = valid(odr, 1);
                      //i++;
                      if (gr[i] &gt;= 11)
                      { o=i; }
                  }
                  if(o!=0)
                  { break; }
                  TextBox4.Text += rn + "\t" + gr;
  
                  //Here using this method we are inserting the data into the database
  
                  x = TextBox2.Text.Substring(0, 1);
                  y = TextBox2.Text.Substring(1, 1);
  
                  //for (int s = 0; s &lt; roll.Length; s++)
                  //{
  
                      //SqlDataAdapter sda = new SqlDataAdapter("select StudentID from Student where APID=" + int.Parse(y)+ "and Semester=" + int.Parse(z) + "and Roll_No=" + int.Parse(RollNo), conn);
                      //DataSet ds = new DataSet();
                      //sda.Fill(ds);
                      //GridView1.DataSource = ds;
                      //GridView1.DataBind();
                      SqlCommand command = new SqlCommand();
                      command.Connection = conn;
                      //command.Connection.Open();
                      command.CommandType = CommandType.Text;
                      int c = rn.Length;
                      for (int n = 0; n&lt;rn.Length; n++)
                      {
                          command.CommandText = "Select StudentID from Student where APID=" + int.Parse(x) + "and Semester=" + int.Parse(y) + "and Roll_No=" + rn[n];
  
                      }
                  reader = command.ExecuteReader();
  
                      while (reader.Read())
                      {
                          TextBox4.Text = reader.GetInt32(0).ToString();
                          a = (int)reader["StudentID"];
                          for (int v = 0; v &lt; rn.Length; v++)
                          {
                              insertdataintosql(rn[v], gr[v]);
                          }
                      }
                  //}
  
              }
              conn.Close();
              oconn.Close();
  </code></pre>
  
  <p>The problem here is that the statements in the while(dbreader.read()) are not executed, rather directly conn.Close() is performed. And if I take another datareader with same command after closing the previous datareader, the error "Specified cast not valid" is thrown at "int q = (int)dbreader.GetValue(rni);". Please help me out...thanks in advance</p>