2017-08-28 4 views
2

Dans ma base de données, il y a deux tables,Sélectionnez les données de deux tables dans Kotlin Anko

1) Tâche: (id (ENTIER + PRIMARY_KEY), le titre, la description, l'horodatage, category_id (clé étrangère de la catégorie -> id))

2) Catégorie: (id (+ ENTIER PRIMARY_KEY), nom)

Pour sélectionner les données à partir d'une table Anko fournit une méthode comme:

var mDatabase: DatabaseManager = DatabaseManager.getInstance(activity) 
var mResult: List<TaskModel> = ArrayList() 
mDatabase.use { 
    mResult = select(TABLE_TASK).parseList(classParser()) 
} 

Ce que je veux est de montrer la liste de tâche avec son nom de catégorie J'ai vérifié tous les tutoriels et les liens de la pile, mais je n'ai eu aucun moyen d'y parvenir.

Est-il possible de sélectionner des données à partir de deux tables dans Kotlin Anko?

Merci est Advance!

+1

[Anko SQLite] (https://github.com/Kotlin/anko/wiki/Anko-SQLite), comme la [SQLiteDatabase] (https://developer.android.com/reference/android/database /sqlite/SQLiteDatabase.html) sur lequel il s'appuie, ne supporte pas nativement les jointures. Cependant, Anko ne fournit pas de mécanisme 'rawQuery()', donc vous ne pouvez même pas le créer vous-même ... – ephemient

Répondre

1

il est tard, mais peut être utile pour quelqu'un comme moi

la réponse courte est oui

vous devez créer une classe de données, y compris joindre les variables de données de colonne comme ceci:

data class joinTable(val id: Int, val title: String, val name:String) 

et utiliser jointure interne dans la commande de sélection

database.use { 
      select("table1 inner join table2", 
        "id,title,name").exec { parseList<joinTable>(classParser()) } 
     } 

s it

+0

Merci pour vos efforts, mais j'ai déplacé ma base de données vers Room. – Maddy

+0

votre accueil, ne vous inquiétez pas, il peut être utile pour quelqu'un d'autre encore :) – Ali