gpt4 book ai didi

c# - 检查 SqlDataReader 对象中的列名

转载 作者:IT王子 更新时间:2023-10-29 03:29:42 25 4
gpt4 key购买 nike

如何检查 SqlDataReader 对象中是否存在列?在我的数据访问层中,我创建了一个为多个存储过程调用构建相同对象的方法。其中一个存储过程有一个附加列,其他存储过程未使用该列。我想修改方法以适应每种情况。

我的应用程序是用 C# 编写的。

最佳答案

public static class DataRecordExtensions
{
public static bool HasColumn(this IDataRecord dr, string columnName)
{
for (int i=0; i < dr.FieldCount; i++)
{
if (dr.GetName(i).Equals(columnName, StringComparison.InvariantCultureIgnoreCase))
return true;
}
return false;
}
}

像其他一些答案一样,使用Exception作为控制逻辑是considered bad practice并且有性能成本。它还会向抛出的 # 个异常的分析器发送误报,上帝会帮助任何人将他们的调试器设置为在抛出的异常时中断。

GetSchemaTable() 也是许多答案中的另一个建议。这不是检查字段是否存在的首选方法,因为它并未在所有版本中实现(它是抽象的,在某些 dotnetcore 版本中会抛出 NotSupportedException)。 GetSchemaTable 在性能方面也是矫枉过正的,因为它是一个非常繁重的函数,如果你 check out the source .

如果您经常使用它,循环遍历字段可能会对性能造成很小的影响,您可能需要考虑缓存结果。

关于c# - 检查 SqlDataReader 对象中的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/373230/

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