问题是,我需要在应用程序中显示一个列表。
我被要求为int
创建一个SQL 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;
}
答案 0 :(得分:4)
更改此行:
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
的用户都表示该用户是管理员。
我知道这是一个家庭作业问题,但接下来,最好在数据库中使用 boolean 类型(在这种情况下为BIT
),因为