我已经看到了从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)
谢谢!
你也可以使用:
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检查.由于冗长,我建议将它放在某种类型的包装器或辅助类中,并从中创建函数.