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)等,一旦完成了第一行,它将移动到第二行第一列,第二列等等。
我如何改变我的代码,使读者将循环的方式:它将前往第一列,然后循环通过所有行,然后前往下一列?(读者不能在读完第一列的所有行之前开始读第二列。
注意:
- 我需要这种循环的原因是因为我有特定的任务需要我(例如,比较第一列中的所有数据,然后从第一列获取结果并与下一列进行比较)
- 每个表中大约有500列和1000行,性能是一个问题。
- 我需要为所有其他80多个表重用相同的代码,因此我不能硬编码列名。
我并不局限于只使用ADO。. NET,但我不熟悉实体框架,LINQ等,所以如果你有任何其他方式来查询数据库,请让我知道
数据读取器是只能向前的,所以你不能这样做。
2。每个表中大约有500列和1000行,性能是一个问题
如果您只有1000行和500列,性能不太可能是一个问题。
将所有数据读入合适的对象(DataTable或Employee对象列表),然后执行您的操作。