A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑丹丹1990 中级黑马   /  2013-4-2 11:27  /  962 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑丹丹1990 于 2013-4-5 18:51 编辑

  private DepartMent ToDeptMent(DataRow row)
      {
          DepartMent dept = new DepartMent();
          dept.Id = (Guid)row["Id"];
          dept.Name = (string)row["Name"];
          dept.IsStopped = (bool)row["IsStopped"];
          return dept;
      }
      public List<DepartMent> GetByDept()
      {
          DataTable dt = SqlHelper.GetDataTable("select * from dbo.T_Department ");
          List<DepartMent> deptList = new List<DepartMent>();
          for (int i = 0;; i++)
          {
              if (dt.Rows != null)//当i=6时,数据库中已经没有数据,应该会break,但当程序走到此处,执行 deptList.Add(ToDeptMent(dt.Rows));???????

              {
                  deptList.Add(ToDeptMent(dt.Rows));
              }
              else
              {
                  break;
              }
          }
          return deptList;
      }

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

6 个回复

倒序浏览
不知道你问的具体问题是什么?
List<DepartMent> deptList = new List<DepartMent>();
还有就是这里不能这样声明吧?
回复 使用道具 举报
看来视频你比我看的远 , 我得加快速度了。。
回复 使用道具 举报
问题原因:
if (dt.Rows[i] != null)//这种判断方式不对,当只有6条数据,dt.Rows[6]是不存在的,会报错,就像数组越界一样。

解决办法:
将for循环改成如下:
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                deptList.Add(ToDeptMent(dt.Rows[i]));
            }
回复 使用道具 举报
DWC_5101 发表于 2013-4-2 12:03
问题原因:
if (dt.Rows != null)//这种判断方式不对,当只有6条数据,dt.Rows[6]是不存在的,会报错,就 ...

         for (int i = 0; i < dt.Rows.Count; i++)
            {
                deptList.Add(ToDeptMent(dt.Rows));
            }
中dt.Rows.Count=0
回复 使用道具 举报
郑丹丹1990 发表于 2013-4-2 12:47
for (int i = 0; i < dt.Rows.Count; i++)
            {
                deptList.Add(ToDept ...

dt.Rows.Count=0,说明在DataTable dt = SqlHelper.GetDataTable("select * from dbo.T_Department "); 这步出问题了。
你在SQLSERVER里执行sql语句试试,看有无数据检索出,如有,说明GetDataTable方法有问题;如无,说明sql语句有问题(前提是表中确实有数据)
回复 使用道具 举报
DWC_5101 发表于 2013-4-2 13:55
dt.Rows.Count=0,说明在DataTable dt = SqlHelper.GetDataTable("select * from dbo.T_Department ");  ...

谢谢!【另:)//当i=6时,数据库中已经没有数据,应该会break,但当程序走到此处,执行 deptList.Add(ToDeptMent(dt.Rows));???????

这个错误点呢???
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马