私は現在、データベースの形式totalhours
とdouble
データベースから一定期間内の従業員の合計遅延を取得していますが、問題は、データベースをチェックして、従業員に遅延の単一のレコードがないことを言うと、になりますreader = null
。だから、私は使用することを決定したisDBNull
が、私は挿入するとif (!myReader.IsDBNull(myReader.GetDouble("total")))
、myReader.Getdouble("total")
その引数でエラーが発生します
システムは
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();
}
これは、.IsDBNull()
期待していint
ますがDBNULLをチェックすることを列の順序位置値を。double
から値型を渡していますmyReader.GetDouble()
。公式ドキュメント:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.isdbnull(v = vs.110).aspx
に変更するだけGetOrdinal
です:
if (!myReader.IsDBNull(myReader.GetOrdinal("total")))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加