黑马程序员技术交流社区

标题: if.......else........语句 [打印本页]

作者: 郑丹丹1990    时间: 2013-4-2 11:27
标题: if.......else........语句
本帖最后由 郑丹丹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;
      }

作者: 随便    时间: 2013-4-2 11:51
不知道你问的具体问题是什么?
List<DepartMent> deptList = new List<DepartMent>();
还有就是这里不能这样声明吧?
作者: kelline    时间: 2013-4-2 12:00
看来视频你比我看的远 , 我得加快速度了。。
作者: DWC_5101    时间: 2013-4-2 12:03
问题原因:
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]));
            }
作者: 郑丹丹1990    时间: 2013-4-2 12:47
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
作者: DWC_5101    时间: 2013-4-2 13:55
郑丹丹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语句有问题(前提是表中确实有数据)
作者: 郑丹丹1990    时间: 2013-4-2 15:14
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));???????

这个错误点呢???




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2