在c#中读取oledbdatareader中的第n行

时间:2015-06-05 09:26:12

标签: c# mysql oledbdatareader

我有一张excel表,显示了部门员工的工资细节。 我需要将这些细节保存到MySql中。

当我使用oledbdatareader时,它从第一行读取。但我必须从不同的行中选择。下面是im展示样本excel表

Dept    Software         
Name    Gross   Deductions  NetPay
AAA    10000    2000        8000
BBB    10000    1000        9000
Dept    HR       
Name    Gross   Deductions  NetPay
CCC    20000        1000     19000

这里每行都是一行。我必须采取第三行,第四行,然后是最后一行(在本例中)。

AAA    10000    2000        8000
BBB    10000    1000        9000
CCC    20000    1000       19000

我怎样才能做到这一点? 我试过这样的。

protected void Button2_Click(object sender, EventArgs e)
  {           

   string path = "C:\\Payslip.xls";
   string query = "SELECT * FROM [Sheet3$]";
   OleDbConnection conn = new OleDbConnection();
   conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source = '" + path + "'" + @";Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;ImportMixedTypes=Text;TypeGuessRows=0""";
   conn.Open();              

try
{
        OleDbCommand ocmd = new OleDbCommand(query, conn);
        OleDbDataReader odr = ocmd.ExecuteReader();             

        while (odr.Read())
        {                               
                name = odr[0].ToString();            
                gross = odr[1].ToString();     
                ded = odr[2].ToString();                
                net = odr[3].ToString();        

                connection = new MySqlConnection(connectionString);
                connection.Open();

                String sQuery = "insert into salary (EmployeeName, Gross) values(@a, @b)";

                MySqlCommand cmd = new MySqlCommand(sQuery, connection);
                cmd.Parameters.AddWithValue("a", name);
                cmd.Parameters.AddWithValue("b", gross); 

                cmd.ExecuteNonQuery();  
                connection.Close();
            }    
      }    
      catch (Exception ex)    
      {
          Label1.Text = ex.Message;                        
      }                 
}

1 个答案:

答案 0 :(得分:1)

您可以使用OleDbDataAdapter读取所有行以填充数据集。然后在此数据集的数据表中按索引选择一行。使用OleDbDataAdapter的一个例子是,

DataAdapter.Fill(Dataset)