ADO.NET datareader逐行循环然后列

时间:2014-03-13 21:16:54

标签: c# .net ado.net

我需要帮助来开发逻辑。以下为例:

例如:

Emp表

ID  | Fname   | Lname    | Salary  | DeptID
---------------------------------------
1   | John    | Smith    | 50000   | 1
2   | David   | Robinson | 80000   | 2
3   | Frank   | Adams    | 45000   | 10

我的代码:

        using (SqlConnection conn = new SqlConnection(connString))
        {
            conn.Open();

            SqlCommand cmd = new SqlCommand("Select * from emp", conn);
            rdr = cmd.ExecuteReader();

            while (rdr.Read())
            {
                string EmpID = rdr[0].ToString();
                string Fname = rdr[1].ToString();
                string Lname = rdr[2].ToString();
                double sal = Convert.ToDouble(rdr[3]);
                int deptID = Convert.ToInt(rdr[4]);
            }
        }

发生了什么,在while(rdr.Read())内,读者将转到第一行并读取第一列(ID),第二列(Fname),第三列(Lname)等等它完成第一行,它将移动到第二行第一列,第二列,依此类推。

如何更改我的代码,以便读者以下列方式循环:它将转到第一列,然后在转到下一列之前遍历所有行? (在完成第一列中的所有行之前,读者不得开始阅读第二列。

注意:

  1. 我需要这种循环的原因是因为我有特定的任务需要我(例如,比较第一列中的所有数据,然后从第一列获取结果并与下一列进行比较)
  2. 每张表中大约有500列和1000行,性能是一个问题。
  3. 我需要为所有其他80多个表重用相同的代码,因此我无法对列名进行硬编码。
  4. 我不仅限于使用ADO.NET,但我不熟悉Entity Framework,LINQ等,所以如果您有任何其他方式来查询数据库,请告诉我

1 个答案:

答案 0 :(得分:1)

数据加载器仅向前,因此您无法执行此操作。

  

2.每个表中有大约500列和1000行,性能是一个问题

如果您只有1000行和500列,则性能不太可能成为问题。

将所有数据读入合适的对象(DataTable或Employee对象列表),然后执行您的操作。