gpt4 book ai didi

c# - 无法使用 IDataReader 读取值

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:32 25 4
gpt4 key购买 nike

我想从数据库中读取数据到列表。

我试过下面的代码

public List<T> StoredProcedureForIList<T>(string spName, params IDataParameter[] commandParameters)
{
List<T> list = new List<T>();

T item;
Type listItemType = typeof(T);
item = (T)Activator.CreateInstance(listItemType);
list.Add(item);

using (IDatabaseConnection connection = new DatabaseConnection())
{
IDbCommand cmd = connection.CreateCommandForStoredProcedure(spName);
foreach (SqlParameter par in commandParameters)
{
cmd.Parameters.Add(par);
}

try
{
using (IDataReader reader = cmd.ExecuteReader())
{
while (reader != null && reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
var prop = listItemType.GetProperty(reader.GetName(i));
prop.SetValue(item, reader[i], null);
}
list.Add(item);
}
}
}
catch(Exception ex)
{ }

return list;
}
}

但问题是当 for 循环开始时,读取器会丢失数据。

数据读取器 ResultView 值为 Enumeration,未产生任何结果。

最佳答案

我的猜测是在执行循环期间发生了一些错误。这种技术...

try 
{
...
}
catch(Exception ex)
{ }

...确保忽略此错误,您得到的只是一个不完整的结果。正如您所注意到的,这使得调试变得非常困难。所以不要那样做。

因此,解决方案是:

  • 删除 try-catch block (即,将 try { ... } catch(Exception ex) {} 替换为 ...),
  • 再次运行代码,
  • 记下发生的错误,
  • 如果你理解错误
    • 修复它
  • 其他
    • 在 StackOverflow 上提出一个新问题。

而且,永远,永远不要再写 catch (Exception ex) {}。 ;-) 进行适当的错误处理,或者根本不进行错误处理。

关于c# - 无法使用 IDataReader 读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8256363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com