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

LeJ*_*une 4 c# sql

我已经看到了从SQL中检索字符串字段的不同方法.有没有"正确"的方式,有什么区别

  SqlDataReader rdr;
  1.  String field = (String) rdr["field"];
  2.  String field = rdr["field"].ToString();
  3.  String field = rdr["field"] As String;
Run Code Online (Sandbox Code Playgroud)

谢谢!

Jos*_*rke 6

你也可以使用:

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);
}
Run Code Online (Sandbox Code Playgroud)

如果你看一下SQlDataReader ["field"]的定义,看起来像:

public override object this[string name]
{
    get
    {
        return this.GetValue(this.GetOrdinal(name));
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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