簡體   English   中英

使用Sqlite.net擴展在Sqlite中插入/檢索數據

[英]Inserting/Retrieve data into Sqlite with Sqlite.net Extensions

我目前正在制作一個使用Sqlite來存儲其中包含對象列表的對象的應用程序。 我在過去一周嘗試插入和檢索對象時遇到了麻煩,並且想知道我是否可以得到一些幫助。 任何幫助將不勝感激! 謝謝!

這是要以OneToMany關系存儲在其中的對象的數據庫:

 [Table("Patient")]
    public class PatientDB
    {
        [PrimaryKey]
        public string ID { get; set;}
        public string Name { get; set; }
        [OneToMany(CascadeOperations = CascadeOperation.All)]
        public List<Vitals> PatientVitals { get; set;}
    }
    [Table("PatientVitals")]
    public class VitalsDB
    {
        [PrimaryKey]
        public string PatientVitalID { get; set; }
        public string Weight { get; set;}
        [ForeignKey(typeof(PatientItem))]
        public string ID { get; set; }
    }

我有一個以json形式從REST服務傳遞給我的單獨對象,我已成功將其反序列化為以下對象:

 pat = new Patient
 {
     ID = "123",
     Name = "Doe",
 List<Vitals> vitals = new List<Vitals>
 {
      new Vitals
      {
         PatientVitalID = "1",
         Weight = "150",
         ID = "123"
      }
      new Vitals
      {
          PatientVitalID = "2",
          Weight = "160",
          ID = "123"
       }
  }
  };

下面是我將患者插入數據庫的方式:

conn = DependencyService.Get<ISQLite>().GetConnection();
conn.CreateTable<PatientDB>();
conn.CreateTable<VitalsDB> ();


var patientToInsert = new PatientDB ();
patientToInsert.ID = pat.ID;
patientToInsert.Name = pat.Name;
conn.Insert(patientToInsert);
var vitalsToInsert = new List ();
foreach (var vital in pat.Vitals)
{
var vitalToInsert = new VitalsDB ();
vitalToInsert.PatientVitalID = vital.PatientVitalsID;
vitalToInsert.Weight = vital.Weight;
vitalsToInsert.Add(vitalToInsert);
}
conn.InsertAll (vitalsToInsert);
foreach (var vital in vitalsToInsert) 
{
vital.SmartCardID = patientToInsert.SmartCardID;
conn.Update (vital);
}

在這里我如何找回病人

public List<PatientDB> retrieveDBPatient(string ID)
{
    return conn.Query<PatientDB> ("SELECT * FROM [Patient] WHERE [ID]= '" + ID + "'");
}

最后,錯誤信息

SQLite.Net.SQLiteException: Constraint
at SQLite.Net.PreparedSqlLiteInsertCommand.ExecuteNonQuery (System.Object[] source) [0x0016b] in <filename unknown>:0
at SQLite.Net.SQLiteConnection.Insert (System.Object obj, System.String extra, System.Type objType) [0x000bc] in <filename unknown>:0

你可以試試這個嗎?

conn = DependencyService.Get().GetConnection();
conn.CreateTable();

var patientToInsert = new PatientDB();
patientToInsert.ID = pat.ID;
patientToInsert.Name = pat.Name;

patiendToInsert.PatientVitals = new List();
foreach (var vital in pat.Vitals)
{
    var vitalToInsert = new VitalsDB();
    vitalToInsert.PatientVitalID = vital.PatientVitalsID;
    vitalToInsert.Weight = vital.Weight;
    patiendToInsert.PatientVitals.Add(vitalToInsert);
}
conn.Insert(patientToInsert);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM