首页 / C# / 如何修复C#中的“指定的转换无效”错误?
如何修复C#中的“指定的转换无效”错误?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何修复C#中的“指定的转换无效”错误?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1580字,纯文字阅读大概需要3分钟。
内容图文
![如何修复C#中的“指定的转换无效”错误?](/upload/InfoBanner/zyjiaocheng/687/5199acd98fcd4a56ade191d60789b70e.jpg)
问题是,我需要在应用程序中显示一个列表.
我按要求为IsAdmin创建了一个SQL int类型,在学校,他们告诉我在应用程序中让int显示布尔值,更确切地说,显示IsAdmin = True或False?
但是,当我启动应用程序并通过登录屏幕时,异常会显示以下消息:
“Specified cast is not valid!”
我需要做什么?
>我尝试转换此(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;
}
解决方法:
更改此行:
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
转换是必要的,因为您不能仅将int分配给bool.我假设在数据库中,任何大于0的值都表示该用户是管理员.
我知道这是一个家庭作业问题,但接下来,最好在数据库中使用布尔类型(在本例中为BIT),因为
>它们占用的数据库空间更少(效率更高)
>使该列的目的更加明显
>消除了转换问题中发布的问题
内容总结
以上是互联网集市为您收集整理的如何修复C#中的“指定的转换无效”错误?全部内容,希望文章能够帮你解决如何修复C#中的“指定的转换无效”错误?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。