2017-02-10 23 views
0

我目前从数据库中获得了一定数量的员工在totalhoursdouble的格式下的总体评分,但是问题出在我检查数据库并让员工没有记录后期这使得reader = null。所以,我决定用isDBNull,但是当我插入if (!myReader.IsDBNull(myReader.GetDouble("total"))),该myReader.Getdouble("total")有一种说法认为reader.GetDouble需要int?

系统不能转换double为'INT

 cc.SetCMD(@"SELECT SUM(AccHours) AS total FROM mia_payroll.tbl_late WHERE COP_ID = @ID AND EID = @EID;"); 
     using (myConn = new MySqlConnection(ConnectionClass.GetConnection())) 
     { 
      myConn.Open(); 
      using (cmDB = new MySqlCommand(cc.GetCMD(), myConn)) 
      { 
       cmDB.Parameters.AddWithValue("@ID", lblCOID.Text); 
       cmDB.Parameters.AddWithValue("@EID", EID); 
       try 
       { 
        using (myReader = cmDB.ExecuteReader()) 
        { 
         while (myReader.Read()) 
         { 
          if (!myReader.IsDBNull(myReader.GetDouble("total"))) 
          { 
           total = myReader.GetDouble("total"); 
          } 
          else 
          { 
           total = 0; 
          } 
          txtLate.Text = System.Convert.ToString(total); 
         } 
        } 
       } 
       catch (Exception ex) 
       { 
        MessageBox.Show(ex.Message); 
       } 
      } 
      myConn.Close(); 
     } 

回答

1

您需要的列索引传递给IsDBNull

替换!myReader.IsDBNull(myReader.GetDouble("total"))有:

!myReader.IsDBNull(myReader.GetOrdinal("total")) 
0

什么是你的数据库中的总场数据类型?如果你的领域不是双倍的,那么你不能把它解析为双倍。该错误清楚地表明,在您的数据库中,数小时的字段是int不是双倍,

相关问题