c# - 有没有正确的方法来检索 SQL 中的字符串字段

标签 c# sql

我见过从 SQL 中检索字符串字段的不同方法。有没有“正确”的方式,有什么区别

  SqlDataReader rdr;
  1.  String field = (String) rdr["field"];
  2.  String field = rdr["field"].ToString();
  3.  String field = rdr["field"] As String;

谢谢!

最佳答案

您还可以使用:

int ordinal=rdr.GetOrdinal("stringField");
if (rdr.IsDBNull(ordinal))
{
    return string.Empty; //Or null or however you want to handle it 
}
else
{   
   rdr.GetString(ordinal);
}

如果您查看 SQlDataReader["field"] 的定义,它看起来像:

public override object this[string name]
{
    get
    {
        return this.GetValue(this.GetOrdinal(name));
    }
}

本质上这是在做同样的事情,只是它是类型安全的。我喜欢做的是创建我自己的包装 SqlDataReader 的 IDataReader。 CSLA 使用他们称为 SafeDataReader 的类似机制,因为它为实现此模式的所有各种数据类型提供重载。

如果您知道该字段不会为空,则可以省略 isDbNull 检查。由于冗长,我建议将它放在某种类型的包装器或帮助器类中,并从中创建函数。

关于c# - 有没有正确的方法来检索 SQL 中的字符串字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/407947/

相关文章:

c# - Blazor Server .NET 8 中的 Blazored.FluentValidation 问题

java - GetRequest 中带有 2 个参数的 SQL 查询

sql - PIVOT SQL 数据和填空

SQL 使用 ROW_NUMBER() 更新记录

MySQL查询优化,大表,使用临时文件排序

c# - 检测字符串中的垃圾字符

c# - Word自动化打印输出: wait for its finished?

c# - 如何在循环内而不是从 Razor View 中的模型访问 DisplayName 注释?

sql - MySQL:如何按列按升序排序,并在末尾显示 NULL 而不是开头?

c# - 3 种快速排序算法