我见过从 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/