工业企业订单管理系统升级(2) — 数据读取器读取数据

项目中用MySqlDataReader 读取数据。我见过很多人错误地使用DataReader。 在这篇文章中,我将尝试解释从数据读取器读取时可以遵循的一些良好习惯。 考虑以下有问题的代码,

MySqlDataReader reader = /* ... */; while (reader.Read()) {
string id= reader["name"].ToString();
int name= int.Parse( reader["age"].ToString() );
/* ... */
}
reader.Close();

你能从上面的代码中找到多少问题? 这段代码有很多问题,

  1. “name”和“age”列可能存在也可能不存在。 如果阅读器中不存在该列,则会出错。
  2. 您可能正在对可能指向NULL的对象调用ToString() 。 这将导致空引用异常。
  3. DataReader 实现IDisposable ,用户代码必须每次调用Dispose()以确定性地释放资源。这不会发生在这里。
  4. reader["age"]可能包含与整数不兼容的值。 在这种情况下, int.Parse()将抛出FormatException 。

以下部分将显示从DataReader读取数据的安全方法。

了解序数

Ordinal是阅读器中列的索引。 GetOrdinal()方法将为您提供所提供的列名的序数。 因此,从读取器读取数据的第一步应该是找到我们想要读取的列的序数。 在获得序数值之前,您必须确保读者可以阅读。SqlDataReader提供了一个在这里很有用的HasRows属性。 这是你如何阅读序数。

Leave a Reply