4 votes

Comment obtenir le nombre de lignes dans une table de base de données avec Flutter SQFlite

Comment obtenir le nombre de lignes d'une table de base de données dans Flutter ? J'utilise le plugin SQFlite.

Je suppose que c'est similaire à Android, mais Android a DatabaseUtils.queryNumEntries(db, TABLE_NAME) . Est-ce que SQFlite a quelque chose de similaire ?

Je réponds ci-dessous à la question au mieux de mes connaissances, mais je serais heureux d'avoir une meilleure réponse s'il y en a une.

20voto

Suragch Points 197

Vous pouvez utiliser

int count = Sqflite.firstIntValue(await db.rawQuery('SELECT COUNT(*) FROM table_name'));

db est un SQFlite Database .

Source : J'ai trouvé ceci ici et dans le code source .

9voto

Essayez cette fonction :

Future<int> getCount() async {
    //database connection
    Database db = await this.database;
    var x = await db.rawQuery('SELECT COUNT (*) from 
    $Table');
    int count = Sqflite.firstIntValue(x);
    return count;
}

0voto

developer1996 Points 414

Essayez ce code :

class DatabaseHelper() {

  Future<List<Map<String, dynamic>>> getDataInMap() async {
      Database database = await this.database;
      return database.query("ahkam_fiqhia");
  }

  Future<List<BooksModel>> getModelsFromMapList() async {
    List<Map<String, dynamic>> mapList = await getDataInMap();

    List<DataModel> dataModel = List();

    for (int i = 0; i < mapList.length; i++) {
      dataModel(DataModel(mapList[i]));
    }
    print(mapList.length);
    return dataModel;
  }

}

Ajouter initState() dans votre vue, puis appelez getModelsFromMapList fonction :

class _MainView extends State<MainView> {

  DatabaseHelper dbHelper = databaseHelper();  

  @override
  void initState() {
    super.initState();
    databaseHelper.getModelsFromMapList();
  }
}

0voto

RusJ Points 54

Plus besoin d'invocations de fonctions difficiles. Essayez simplement avec .length Si vous utilisez un modèle de données, vous pouvez utiliser son nom à l'endroit suivant MODEL_NAME .

Future<int> getCount() async {

Database db = await this.database;
var result = await db.query(MODEL_NAME.TABLE_NAME);
int count = result.length;
return count;

}

-1voto

Vincent Points 467

Vous pouvez également utiliser

List<Map> list = await db.rawQuery('SELECT * FROM table_name');
int count = list.length;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X