c#系统.InvalidCastException:指定的Cast无效
本文关键字:Cast 无效 系统 InvalidCastException | 更新日期: 2023-09-27 18:03:36
这几个小时我一直在努力解决一个问题。
我一直得到一个错误,它告诉我指定的强制类型转换无效。我可以使用存储过程更改数据库上的值。然而,当我尝试使用可执行文件时,我得到了这个错误。
错误
System.InvalidCastException: Specified cast is not valid.
at Administrator_Panel.DB.ReadAccountInfo(String UserID, In32& Count)
这是代码。
public static Account ReadAccountInfo(string UserID, out int Count)
if (Reader.Read())
ReturnValue = new Account((int)Reader["UserUID"],
(string)Reader["Pw"],
(bool)Reader["Admin"],
(bool)Reader["Staff"],
(short)Reader["Status"],
(int)Reader["Point"],
(int)Reader["DaemonPoints"]);
任何帮助都会很感激。:)谢谢你
看这个答案:如何(有效地)转换(强制转换?)一个SqlDataReader字段到它相应的c#类型?
您不能仅仅将SqlDataReader
字段强制转换为相应的值类型,因为可能为空。你可以使用可空类型,但很可能你的Account对象没有设置为可空类型。
ReturnValue = new Account(Reader["UserUID"] == DBNull.Value ? 0 : (int)Reader["UserUID"] ,
Reader["Pw"] == DBNull.Value ? "" : Reader["Pw"].ToString(),
Reader["Admin"] == DBNull.Value ? false : (bool)Reader["Admin"],
Reader["Staff"] == DBNull.Value ? false : (bool)Reader["Staff"],
Reader["Status"] == DBNull.Value ? (short) 0 : (short)Reader["Status"],
Reader["Point"] == DBNull.Value ? 0 : (int)Reader["Point"],
Reader["DaemonPoints"] == DBNull.Value ? 0 : (int)Reader["DaemonPoints"]);