2015-09-09 41 views
0

我目前正在製作一個應用程序使用Sqlite來存儲一個對象列表中的對象。我一直在試圖插入和檢索過去一週的對象時遇到困難,並且想知道我是否可以得到一些幫助。任何幫助將不勝感激!謝謝!使用Sqlite.net擴展插入/檢索數據到Sqlite

這是數據庫的對象是存儲在一個一對多的關係:

[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; } 
    } 

我傳遞給我從一個REST服務以JSON的形式,我有成功的一個單獨的對象反序列化到下面的對象:

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 

回答

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); 
+0

'conn = DependencyService.Get ().GetConnection(); conn.CreateTable (); conn.CreateTable ();' 當我複製並粘貼代碼時發生了一些錯誤,這裏是我編輯的內容! – Fayt

+0

完美,這是我想說的下一件事 –