2017-07-31 81 views
0

我正在开发一个应用程序在Xamarin型PCL,我的数据库结构,我想使用SQLite的,但我有以下的疑虑......SQLite的Xamarin PCL

  1. 当进入我的数据库记录,它采用ID = 0,在我的数据模型使用

    [PrimaryKey, AutoIncrement] 
        Public int ViolationID {get; set; } 
    

而且还在,我进入零注册表中,我不知道我做错了......或者这是一个错误在SQLite.NET-PCL包中?

  1. 如何验证这些记录是否真的被输入?我在我的代码

    public class DataAccess : IDisposable 
    { 
        private SQLiteConnection connection; 
    
        public DataAccess() 
        { 
         var entity = DependencyService.Get<IEntity>(); 
         connection = new SQLiteConnection(entity.Plataforma, System.IO.Path.Combine(entity.DirectorioBD, "Infraccions.db3")); 
         connection.CreateTable<Infraccion>(); 
        } 
    
        public void InsertInfraccion(Infraccion infraccion) 
        { 
         connection.Insert(infraccion); 
        } 
    
        public void UpdateInfraccion(Infraccion infraccion) 
        { 
         connection.Update(infraccion); 
        } 
    
        public Infraccion GetInfraccion(int InfraccionID) 
        { 
         return connection.Table<Infraccion>().FirstOrDefault(c => c.InfraccionID == InfraccionID); 
        } 
    
        public List<Infraccion> GetInfraccions() 
        { 
         return connection.Table<Infraccion>().OrderBy(c => c.MotivoID).ToList(); 
        } 
    
        public void DeleteInfraccion(Infraccion infraccion) 
        { 
         connection.Delete(infraccion); 
        } 
    
        public void Dispose() 
        { 
         connection.Dispose(); 
        } 
    } 
    

应该在我的手机上创建一个名为Infraccions.db3表?

谢谢您的留言...

回答

0

你是说所有的新记录为0的ID,并覆盖现有的记录在数据库中?

如果是这样,那么这是SQLite的工作原理 - 对于int列,0是一个有效的值,因此当ID为0时,它将覆盖记录,而不是增加值。

使用int主键的正确方法是定义主键作为可为空INT,这样一个新的记录值为空,这将更新为下一个可用的ID:

[PrimaryKey, AutoIncrement] 
public int? ViolationID {get; set; } 

基本上将int更改为int?

0

1)当进入我的数据库的记录,它需要的ID = 0,在我的数据 模型使用

您正在使用模型中的主键和自动递增这意味着你无法在主字段中手动输入0,并自动在此字段中输入下一个值。

2)如何验证这些记录是否真的被输入?

您可以在创建数据库时获取数据库文件路径,并且可以打开并查看该数据。

(System.IO.Path.Combine(entity.DirectorioBD, "Infraccions.db3")) 

有许多浏览器插件可以访问sqllite数据库。

+0

我找不到.db3文件,你是以隐藏的方式创建它?如果是这样......我如何获得公共模式?对我有帮助 –

+0

您使用哪款手机? –

+0

阿尔卡特Pixi 4 @Ziyad –