首页 新闻 会员 周边

C#代码中的Throw 为什么报错 ,注释提示说没有返回值,该怎么修改呢: [C#]

0
[已解决问题] 解决于 2017-09-28 15:53

 

1、业务实体:

   public class Article

  {

      private int _articleId;

private string _title;

       private string _articleDetails; 

 

  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);

        }

    }

程序运行显示 数据访问错误显示:

throw e处;   对象不能从 DBNull 转换为其他类型。请各位指示!

WesternWind的主页 WesternWind | 初学一级 | 园豆:7
提问于:2011-12-29 16:08
< >
分享
最佳答案
0

SqlDataReader reader = SqlHelper.GetReader(sql, new SqlParameter("@articleId", id)调试跟踪下,看看是什么问题

奖励园豆:5
Rookier | 小虾三级 |园豆:652 | 2012-01-17 10:23
其他回答(1)
0

你自己定义的方法的具体内容贴出来啊!你添加断点,看看是SqlHelper.GetReader(sql, new SqlParameter("@articleId", id))的问题还是FillRecord(reader)的问题。

yanzhe | 园豆:213 (菜鸟二级) | 2011-12-29 16:18

 /// <summary>
        /// 执行有参SQL语句,并返回SqlDataReader
        /// </summary>
        public static SqlDataReader GetReader(string sql, params SqlParameter[] values)
        {
            SqlCommand cmd = new SqlCommand(sql, Connection);
            cmd.Parameters.AddRange(values);
            SqlDataReader reader = cmd.ExecuteReader();
            return reader;
        }

支持(0) 反对(0) WesternWind | 园豆:7 (初学一级) | 2011-12-29 16:24

@WesternWind: 你查询的结果里是不是有空值啊?

支持(0) 反对(0) yanzhe | 园豆:213 (菜鸟二级) | 2011-12-29 16:47

@WesternWind: 还有FillRecord(reader);  这是什么方法啊?

支持(0) 反对(0) yanzhe | 园豆:213 (菜鸟二级) | 2011-12-29 16:57

@yanzhe: 

 /// 实º¦Ì体¬?对?象¨®填¬?充?业°¦Ì务?对?象¨®公?共2方¤?法¤¡§

        /// </summary>

        /// <param name="reader"></param>

        /// <returns></returns>

        private static Article FillRecord(SqlDataReader reader)

        {

            Article a = new Article();

 

            a.ArticleId = Convert.ToInt32(reader["articleId"]);

            a.ChannelId = Convert.ToInt32(reader["channelId"]);

            a.Title = Convert.ToString(reader["title"]);

            a.ArticleDetails = Convert.ToString(reader["articleDetails"]);

               return a;        }

    }

 }

支持(0) 反对(0) WesternWind | 园豆:7 (初学一级) | 2011-12-29 17:03

@yanzhe: 

数据库中部分字段应该是有 空值  滴吧1~!

支持(0) 反对(0) WesternWind | 园豆:7 (初学一级) | 2011-12-29 17:04

@WesternWind: 是FillRecord()的问题。就是因为是空值,才会有这个错误,加个是否为空的判断呗

支持(0) 反对(0) yanzhe | 园豆:213 (菜鸟二级) | 2011-12-29 17:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册