如何在Flutter中获取数据库表的行数。我正在使用SQFlite插件。
我认为它与Android类似,但是Android具有DatabaseUtils.queryNumEntries(db, TABLE_NAME)
。 SQFlite有类似的东西吗?
我将尽我所能回答这个问题,但是如果有一个更好的答案,我将很高兴。
答案 0 :(得分:2)
您可以使用
int count = Sqflite.firstIntValue(await db.rawQuery('SELECT COUNT(*) FROM table_name'));
其中db
是SQFlite Database
。
来源:我在here和source code中找到了这个。
答案 1 :(得分:1)
您也可以使用
List<Map> list = await db.rawQuery('SELECT * FROM table_name');
int count = list.length;
答案 2 :(得分:1)
尝试使用此功能:
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;
}
答案 3 :(得分:1)
不再需要硬函数调用。试试.length
如果您使用的是数据模型,则可以在 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;
}
答案 4 :(得分:1)
我认为在 DatabaseHelper/Service class
中使用更好的方法:
class DbService {
static Database _db; //static = only a single copy of _db is shared among all the instances of this class (Database)
static int _count;
static int get count => _count;
...
这样每次执行 query
时都会更新 count
,这也可以更新带有过滤器的查询的 count
,而无需编写新的 {{1} ?:
function
然后简单地使用 List<Map> result = await db.query('myDatabase');
_count = result.length;
return result;
}
来获取计数
答案 5 :(得分:0)
尝试以下代码:
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;
}
}
在视图中添加initState()
函数,然后调用getModelsFromMapList
函数:
class _MainView extends State<MainView> {
DatabaseHelper dbHelper = databaseHelper();
@override
void initState() {
super.initState();
databaseHelper.getModelsFromMapList();
}
}