4

申し訳ありませんが、これは脳のファートです。インターネット全体を検索しましたが、これを理解できません。
エラー: 「タイプ 'System.DateTime' のオブジェクトをタイプ 'System.String' にキャストできません。」

if (oDbDataReader.GetString(2) == DateTime.Now.AddDays(-90).ToShortDateString())       //DateCreated
{
    oEmp.PasswordCompliance = "Password expired";
}
4

3 に答える 3

5

2 つの問題があります。まず、同等性を比較しています。3 か月後に誰かがチェックしても、これはトリガーされません。次に、おそらくデータベースにDateorDateTimeを保存しているため、呼び出しがGetString失敗します。

代わりに以下を使用してください (この場合、文字列を使用する理由はありません)。

if (oDbDataReader.GetDateTime(2) <= DateTime.Now.AddDays(-90))

;また、元のパスワードには、パスワードが常に期限切れになる可能性のある余分なものがあったことに注意してください。

于 2012-07-12T22:07:08.927 に答える
4

[2] 列のタイプは何ですか? その場合は、 DbDataReader.GetDateTimeDateTimeを試してください。

if (oDbDataReader.GetDateTime(2) < DateTime.Now.AddDays(-90)) 
{
    oEmp.PasswordCompliance = "Password expired";
}
于 2012-07-12T22:07:44.277 に答える
0

リーダーの位置 2 の列の値は、文字列ではなく DateTime です。したがって、GetString 呼び出しは失敗します。

于 2012-07-12T22:11:42.740 に答える