我需要您对我的代码的专业知识:)
这是我写的:
public List<List<string>> ExecuteSelectPPRD(string query, string C1, string C2, string C3, string C4, string C5)
{
List<List<string>> result = new List<List<string>>();
try
{
using (OracleConnection conn = new OracleConnection(oradbPPRD))
{
conn.Open();
using (OracleCommand cmd = new OracleCommand(query, conn))
{
OracleDataReader reader = cmd.ExecuteReader();
DataTable dt = new DataTable();
if (reader.HasRows)
{
while (reader.Read())
{
foreach (DataRow row in dt.Rows)
{
List<string> thisRow = new List<string>();
thisRow.Add((string)reader[C1]);
thisRow.Add((string)reader[C2]);
thisRow.Add((string)reader[C3]);
thisRow.Add((string)reader[C4]);
thisRow.Add((string)reader[C5]);
result.Add(thisRow);
}
}
}
else
{
MessageBox.Show("No rows found.");
}
reader.Close();
}
conn.Dispose();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return result;
}
当我调用此函数时,它就像“foreach”部分不起作用。事实上,foreach被忽略了,我想知道为什么因为一切看起来都是合乎逻辑的。
目标是从oracle数据库中提取一个表,该数据库包含5列,我知道他们的名字,但我不知道行数。然后我将它导出到一个excel文件中(这部分在另一个函数中工作,现在这个部分没有问题)
提前感谢您的评论
答案 0 :(得分:0)
你的foreach (DataRow row in dt.Rows)
没用。当您实际读取数据读取器时,它会迭代空数据表。
您的while
足以让数据阅读器继续前进到新行。只需删除foreach
。