public static News GetNewsByNewsId(int NewsId)
    {
        News SingleNews = new News();
        string procname = "dbo.GetNewsByNewsId";
        SqlParameter[] prams ={ new SqlParameter("@NewsId", SqlDbType.Int) };
        prams[0].Value = NewsId;
        SqlDataReader Dr = DataBase.RunProcGetReader(procname,prams);
        while (Dr.Read())
        {
            SingleNews = new News(Dr);
        }
        Dr.Close();
        return SingleNews;
    }
    public static SqlDataReader GetDrNewByNewsId(int NewsId)
    {        string procname = "dbo.GetDrNewByNewsId";
        SqlParameter[] prams ={ new SqlParameter("@NewsId", SqlDbType.Int) };
        prams[0].Value = NewsId;
        SqlDataReader Dr = DataBase.RunProcGetReader(procname, prams);
        return Dr;
    }

解决方案 »

  1.   

    第一个返回的是个用户对象,一般第一种用来返回List<??>泛型的
    第二个返回的就直接是个对象集合。
    sqlDataReader能直接绑定的到数据源吗?如果使用的话,还是要转换的吧?第二种写法没有关闭数据连接池,很危险的。但如果关闭了,返回的就是Null了
      

  2.   


            while (Dr.Read())
            {
                SingleNews = new News(Dr);
            } 不是一般的强!
    循环赋值,丢掉前面的值
    知道狗熊掰棒子的故事吗?
      

  3.   

      一般这样写法应该放在一个list里面
      

  4.   

    实际上,在ADO.NET范畴,使用Entity Framework大概已经不稀奇了!还抱着最早(1999年代)的ADO.NET编程方式不放么?
      

  5.   

       while (Dr.Read()) 
            { 
                SingleNews = new News(Dr); 
            } 
    改下 
    list<News> arr=new list<News>();
       while (Dr.Read()) 
            { 
                arr.add(new News(Dr)); 
            } 
      

  6.   

    感谢7楼   抛弃后者,改进前者! 下面简单的介绍以下这个EF。在.Net Framework SP1微软包含一个实体框架(Entity Framework),此框架可以理解成微软的一个ORM产品。用于支持开发人员通过对概念性应用程序模型编程(而不是直接对关系存储架构编程)来创建数据访问应用程序。目标是降低面向数据的应用程序所需的代码量并减轻维护工作。Entity Framework 应用程序有以下优点:·                 应用程序可以通过更加以应用程序为中心的概念性模型(包括具有继承性、复杂成员和关系的类型)来工作。·                 应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性。·                 可以在不更改应用程序代码的情况下更改概念性模型与特定于存储的架构之间的映射。·                 开发人员可以使用可映射到各种存储架构(可能在不同的数据库管理系统中实现)的一致的应用程序对象模型。·                 多个概念性模型可以映射到同一个存储架构。·                 语言集成查询支持可为查询提供针对概念性模型的编译时语法验证。实体框架Entity Framework 是 ADO.NET 中的一组支持开发面向数据的软件应用程序的技术。在EF中的实体数据模型(EDM)由以下三种模型和具有相应文件扩展名的映射文件进行定义。·                 概念架构定义语言文件 (.csdl) -- 定义概念模型。·                 存储架构定义语言文件 (.ssdl) -- 定义存储模型(又称逻辑模型)。·                 映射规范语言文件 (.msl) -- 定义存储模型与概念模型之间的映射。实体框架 使用这些基于 XML 的模型和映射文件将对概念模型中的实体和关系的创建、读取、更新和删除操作转换为数据源中的等效操作。EDM 甚至支持将概念模型中的实体映射到数据源中的存储过程。它提供以下方式用于查询 EDM 并返回对象:·                 LINQ to Entities -- 提供语言集成查询 (LINQ) 支持用于查询在概念模型中定义的实体类型。·                 Entity SQL -- 与存储无关的 SQL 方言,直接使用概念模型中的实体并支持诸如继承和关系等 EDM 功能。·                 查询生成器方法 --可以使用 LINQ 风格的查询方法构造 Entity SQL 查询。
      

  7.   

    楼主,不会循环那你干嘛要用循环语句呢?
            if ( Dr.Read() )
              new SingleNews = new News(Dr) ;
    这样不行吗