我已经看到了从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的simillar机制,因为它为实现此模式的所有各种数据类型提供了重载.
如果您知道该字段不为null,则可以省略isDbNull检查.由于冗长,我建议将它放在某种类型的包装器或辅助类中,并从中创建函数.