我有一个带有以下实体的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
中添加一个默认值设置为0-false的新布尔列,因为它将布尔存储为0或1。
我尝试了以下方法:
情况1:
[Column ("is_wah_allowed")] //Newly added Column
输出:这在SQLite 的DB浏览器中显示Null
情况2:
[Column ("is_wah_allowed"), Default (false)] //Newly added Column
输出:这在conn.CreateTable((处引发异常;-无法从bool转换为int.
情况3:
[Column ("is_wah_allowed"), Default (value : 0)] //Newly added Column
输出:这会在SQLite的DB浏览器中显示False值,而不是0。当服务器返回数据时,我保存/更新它们,然后在更新的行中将它们显示为0或1,因为服务器将其作为整数值处理。
我想知道:
案例1:为什么它显示Null而不是0默认值?
案例2:它为什么抛出异常?
案例3:为什么它显示False而不是0?
提前感谢!!
SQLite中不存在boolean
。相反,您将boolean
值作为int存储在数据库中的SQLite中。可以使用的值为0表示false,1表示true。当您从数据库中选择int时。根据0&1您可以右键单击if
else
块。
编辑1
布尔数据类型SQLite没有单独的布尔存储类。相反,布尔值存储为整数0(false(和1(true(。
SQLite数据类型
欲了解更多信息,请访问此