thisCommand.CommandText = "SELECT [普通加班时间], [周末加班时间], [旷工天数], [请假天数] FROM [考勤表] WHERE [年]='" + DropDownList1.SelectedValue + "' and [月]='" + DropDownList2.SelectedValue + "' and [员工姓名]='" + DropDownList3.SelectedValue + "'";
                    SqlDataReader time = thisCommand.ExecuteReader();
                    int tpt, tzm, tkg, tqj;
                    while (time.Read())
                    {
                         tpt = Convert.ToInt32(time[0]);
                         tzm = (int)time["周末加班时间"];
                         tkg = (int)time["旷工天数"];
                         tqj = (int)time["请假天数"];
                    }当我使用上面定义的tpt,tzm,tkg,tqj进行计算的时候,比如ttotal=tpt + tzm + tkg + tqj;会提示“使用了未赋值的局部变量tpt,tzm,tkg,tqj”,可是数据库中明明有数据的。这样应该怎么处理?我是想把从数据库读出的数据定义成变量,然后计算。如果我的思路有问题,那么应该怎样做?请各位帮忙啦

解决方案 »

  1.   

         int tpt=0, tzm=0, tkg=0, tqj=0;
                        while (time.Read())
                        {
                             tpt = Convert.ToInt32(time[0]);
                             tzm = (int)time["周末加班时间"];
                             tkg = (int)time["旷工天数"];
                             tqj = (int)time["请假天数"];
                        }先赋值,不然编译程序怎么知道你那能进循环,如果不进循环,你就是null,就会异常
      

  2.   

    给个0作为初始值不就好啦,你while中赋值,编译器会考虑你while不执行的情况,那样就是未赋值。
      

  3.   

    如果while (time.Read())
    不满足,当然变量就没赋值啊,所以要进行初始值