我需要为 FetchSize 赋值。可以使用反射从数据读取器接收行大小。
但是我需要行数,我可以将其硬编码为行大小 * 100000(而不是行数)。
executedataReader 将用于多个存储过程,无法获取行数。
OracleDataReader dr = command.ExecuteReader();
Int32 rowCount = 100000; //in this case actual result will be just 20k only. will it have any issue?
FieldInfo fi = dr.GetType().GetField("m_rowSize", BindingFlags.Instance | BindingFlags.NonPublic);
Int32 rowSize = Convert.ToInt32(fi.GetValue(dr));
dr.FetchSize = rowCount * rowSize;
while (dr.Read())
{
string myField = (string)dr[0];
Console.WriteLine(myField);
}
解决这个问题会有什么弊端吗?