为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复 C# 中的“指定转换无效”错误?

如何修复 C# 中的“指定转换无效”错误?

C#
幕布斯6054654 2022-11-21 15:53:40
问题是,我需要在我的应用程序中显示一个列表。我按照要求制作了一个 SQLint类型IsAdmin,在学校里他们告诉我在应用程序中制作 int show bool,更准确地说是显示IsAdmin=True或False?但是当我启动应用程序并通过登录屏幕时,异常显示为消息:“指定的演员表无效!”我需要做什么?我尝试转换它(bool)reader["IsAdmin"].ToInt32,但它显示错误。我尝试将其更改为整数,但它显示了 1 和 0。     public static List<Korisnik> GetAllUsers() {            List<Korisnik> korisnici = new List<Korisnik>();            Korisnik korisnik = null;            using (SqlConnection conn = new SqlConnection()) {                conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnString"].ToString();                conn.Open();                SqlCommand command = new SqlCommand("SELECT ID, UserName, UserPass, IsAdmin FROM Users01", conn);                using (SqlDataReader reader = command.ExecuteReader()) {                    while (reader.Read()){                        korisnik = new Korisnik((int)reader["ID"], (string)reader["UserName"], (string)reader["UserPass"], (bool)reader["IsAdmin"]);                        korisnici.Add(korisnik);                    }                }            }            return korisnici;        }
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

更改此行:


korisnik = new Korisnik((int)reader["ID"], 

                        (string)reader["UserName"], 

                        (string)reader["UserPass"], 

                        (bool)reader["IsAdmin"]);

...至:


korisnik = new Korisnik((int)reader["ID"], (string)reader["UserName"], 

                        (string)reader["UserPass"], 

                        ((int)reader["IsAdmin"]) > 0 ? true : false ); // convert from int to bool

转换是必要的,因为您不能只将 an 分配int给 a bool。我假设在数据库中,大于0意味着用户是管理员。


我知道这是一个家庭作业问题,但展望未来,最好在数据库中使用布尔类型(在本例中BIT),因为

  1. 他们在数据库中占用的空间更少(效率更高)

  2. 使专栏的目的更加明显

  3. 消除了问题中发布的转换问题

告诉我更多关于BIT


查看完整回答
反对 回复 2022-11-21
  • 1 回答
  • 0 关注
  • 278 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号