Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite默认值为布尔列,未按预期工作_Sqlite_Xamarin_Xamarin.ios_Sqlite.net - Fatal编程技术网

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的值。请参阅我的最新答案。