2016-04-07 29 views
0

Özellik olarak başka bir nesneyi olan bir nesneyi nasıl sorgularım? Mülkün değerlerini de almam gerek. İşte benim model:Android sqllite, başka bir nesnenin özelliği olan bir nesneyi sorgulama

public class Department { 
public int DeptId; 
public string DeptName; 
} 

public class Employee { 
public int Id; 
public string Name; 
public int DeptId; 
public Department Department; 
} 

Bir C# arka plandan geliyorum, ben Entity Framework kullanarak C# ile bu yapabilirdi. Şimdi bu model çalışıyor gibi görünüyor ama nesneler için bir sqllite işlevselliği eklediğimde, nasıl sorgulanacağından emin değilim.

İşte benim ilk denemede, ama bu en iyi yolu

public List<Employee> getAllEmployeesWithDepartments(){ 
    List<Employee> employees = new ArrayList<>(); 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor res = db.rawQuery("SELECT * FROM Employee e LEFT JOIN Department d on e.DeptId = d.Id" , null); 

    if(res.moveToFirst()){ 
     do{ 
      Employee emp = new Employee(); 
      emp.Id = res.getInt(res.getColumnIndex("Id")); 
      emp.Name = res.getString(res.getColumnIndex("Name")); 

      Department dep = new Department(); 
      dep.Id = res.getInt(res.getColumnIndex("Id")); 
      dep.Name = res.getString(res.getColumnIndex("Name")); 

      emp.Department = dep; 
      employees.add(emp); 
     }while (res.moveToNext()); 
    } 
    return employees; 
} 

cevap

0

Kafan karışmış olup olmadığından emin değilim. SQLite'de nesne yok. Onun bir tablo tabanlı veritabanı (neredeyse tüm veritabanları gibi). Nesneleri tablolara ayırabilirsiniz, ancak bu eşlemeleri kendiniz oluşturmanız gerekir. SQLite nesneye sahip olmadığından, kesinlikle alt nesne içermez. Genel tablodaki bir yabancı anahtar kısıtlaması ile başka bir tabloya katılarak genellikle böyle bir şey yaparsınız, ancak gerçekten şemanız tarafından tanımlanır. Senin için genel bir cevap yok.