我使用SQLdatareader从数据库构建poco。除非在数据库中遇到空值,否则代码可以正常工作。例如,如果数据库中的FirstName列包含空值,则抛出异常。
employee.FirstName = sqlreader.GetString(indexFirstName);
在这种情况下处理空值的最佳方法是什么?
我使用SQLdatareader从数据库构建poco。除非在数据库中遇到空值,否则代码可以正常工作。例如,如果数据库中的FirstName列包含空值,则抛出异常。
employee.FirstName = sqlreader.GetString(indexFirstName);
在这种情况下处理空值的最佳方法是什么?
当前回答
在尝试读取它之前检查sqlreader.IsDBNull(indexFirstName)。
其他回答
我们使用一系列静态方法从数据读取器中提取所有值。创建静态/共享方法的好处是,你不必一遍又一遍地做同样的检查…
静态方法将包含检查空值的代码(参见本页的其他答案)。
整洁的小笑话:
while (dataReader.Read())
{
employee.FirstName = (!dataReader.IsDBNull(dataReader.GetOrdinal("FirstName"))) ? dataReader["FirstName"].ToString() : "";
}
一种方法是检查db是否为null:
employee.FirstName = (sqlreader.IsDBNull(indexFirstName)
? ""
: sqlreader.GetString(indexFirstName));
我使用下面列出的代码来处理被读入数据表的Excel表中的空单元格。
if (!reader.IsDBNull(2))
{
row["Oracle"] = (string)reader[2];
}
if(reader.IsDBNull(ColumnIndex)) {// logic}就像许多答案所说的那样。
我想提一下,如果你使用列名,比较类型可能会更舒服。
if(reader["TeacherImage"].GetType() == typeof(DBNull)) { //logic }