繁体   English   中英

ADO.NET datareader按行然后按列循环

[英]ADO.NET datareader loop by row then column

我需要帮助来制定逻辑。 以下面的示例数据为例:

例如:

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多个表重用相同的代码,因此无法对列名进行硬编码。

我不仅限于仅使用ADO.NET,而且不熟悉Entity Framework,LINQ等,因此,如果您还有其他查询数据库的方法,请告诉我

数据读取器是仅转发的,因此您不能这样做。

2.每个表中约有500列和1000行,性能是一个值得关注的问题

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM