SQLite默认值为布尔列,未按预期工作
我有一个带有以下实体的SQLite默认值为布尔列,未按预期工作,sqlite,xamarin,xamarin.ios,sqlite.net,Sqlite,Xamarin,Xamarin.ios,Sqlite.net,我有一个带有以下实体的SQLite表: [Table ("employee")] public class Employees { [Column ("employee_id")] [PrimaryKey] public int EmployeeId { get; set; } [Column ("username")] public string UserName { get; set; } [Column ("password")]
SQLite
表:
[Table ("employee")]
public class Employees
{
[Column ("employee_id")]
[PrimaryKey]
public int EmployeeId { get; set; }
[Column ("username")]
public string UserName { get; set; }
[Column ("password")]
public string Password { get; set; }
[Column ("first_name")]
public string FirstName { get; set; }
[Column ("last_name")]
public string LastName { get; set; }
[Column ("is_wah_allowed")] //Newly added Column
public bool IsWAHAllowed { get; set; }
}
当应用程序启动时,我正在创建一个表
conn.CreateTable<Employees>();
输出:这将在SQLite的DB浏览器中显示Null
案例2:
[Column ("is_wah_allowed")] //Newly added Column
[Column ("is_wah_allowed"), Default (false)] //Newly added Column
[Column ("is_wah_allowed"), Default (value : 0)] //Newly added Column
输出:这会在conn.CreateTable()处引发异常;-无法从bool转换为int
案例3:
[Column ("is_wah_allowed")] //Newly added Column
[Column ("is_wah_allowed"), Default (false)] //Newly added Column
[Column ("is_wah_allowed"), Default (value : 0)] //Newly added Column
输出:这将在SQLite的DB Browser中显示假值,而不是0。
当服务器返回数据时,我保存/更新它们,然后在更新的行中将它们显示为0或1,因为服务器将其作为整数值处理
我想知道:
案例1:为什么它显示Null而不是0默认值
案例2:为什么它抛出异常
案例3:为什么它显示False而不是0
提前谢谢 SQLite中不存在
布尔值。而是将布尔值作为int存储在SQLite中的数据库中。可以使用的值为0表示false,1表示true。当您从数据库中选择int时。根据0和1,您可以对if
else
块进行右转
编辑1
布尔数据类型
SQLite没有单独的布尔存储类。相反,布尔值存储为整数0(false)和1(true)
有关更多信息,请访问是否有办法保持实体属性类型为布尔值,同时在SQLite中存储0,1值?因为我不想把这个类型转换成整数。事实上!仅在创建表时使用bool,但它仅接受/获取0或1的值。请参阅我的最新答案。