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