C#代码中的Throw 为什么报错 ,注释提示说没有返回值,该怎么修改呢:
请问各位大侠,C#代码中的Throw 为什么报错 ,注释提示说没有返回值,该怎么修改呢:
1、业务实体:
    public class Article
   {
       private int _articleId;      
   public int ArticleId
   {
   get { return _articleId; }
   set { _articleId = value; }
   }    
…
}
2、调用通用的SQLHelper ,数据访问如下:
  public static Article GetArticleByArticleId(int id)
   {
   string sql = "select * from article where articleId=@articleId";
   try
   {
   using (SqlDataReader reader = SqlHelper.GetReader(sql, new SqlParameter("@articleId", id)))
   {
   if (reader.Read())
   {  return FillRecord(reader);  }
   else
   {  return null;  }
   }
   }
   catch (Exception e)
   {
   Console.WriteLine(e.Message);     throw e;
   }
   }
3、业务逻辑
public static class ArticleManager
     {
         public static Article GetArticlesByArticleId(int id)
         {
             return ArticleService.GetArticleByArticleId(id);
         }
     }
[b]程序运行显示 数据访问错误显示:
throw e处;   对象不能从 DBNull 转换为其他类型。请各位指示[color=#0000FF][/color]
------解决方案--------------------
------解决方案--------------------  if(reader["articleId"]!=null)
{
a.ArticleId = Convert.ToInt32(reader["articleId"]);
}
所有全加if  肯定有空的
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
1、
 catch (Exception e)
 {
     Console.WriteLine(e.Message);
     throw e;
 }
 这里throw e 要改成throw
 不然的话调试的时候会人为错误是从 throw e;这行代码中产生的。
2、
  你说提示无将DBNull 转换成其他类型,说明你查询的数据中有字段是为null的。这个时候要人为的进行转换。
  因为数据库中存储null值和程序中存储null值是有区别的
------解决方案--------------------C# code
if(reader["articleId"]!=DBNull.value)
{
   a.ArticleId = Convert.ToInt32(reader["articleId"]);
}