ADO.. NET数据读取器循环先行后列

本文关键字:循环 NET 数据 读取 ADO | 更新日期: 2023-09-27 17:50:20

我需要帮助来开发一个逻辑。以下面的数据为例:

例如

:

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,但我不熟悉实体框架,LINQ等,所以如果你有任何其他方式来查询数据库,请让我知道

ADO.. NET数据读取器循环先行后列

数据读取器是只能向前的,所以你不能这样做。

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

如果您只有1000行和500列,性能不太可能是一个问题。

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