SqlDataReader reader;
string r="C:\\Users\\Shivam\\Documents\\";
if ((FileUpload1.PostedFile != null)&&(FileUpload1.PostedFile.ContentLength > 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<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] >= 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 < 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<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 < rn.Length; v++)
{
insertdataintosql(rn[v], gr[v]);
}
}
//}
}
conn.Close();
oconn.Close();
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