[英]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.