我有一个类DBHelper,我可以使用它在数据库中添加和删除数据。我遇到了这种问题,我无法获得列数。我在 Stack 上看到了同样的问题,但我不知道如何创建一个可以获取列数的类方法。他在那里以某种方式初始化了数据库,我无法理解。如果您能提供帮助,我将不胜感激)
这是那个代码
int count = Sqflite.firstIntValue(await db.rawQuery('SELECT COUNT(*) FROM table_name'));
DBHelper 代码
import 'dart:async';
import 'dart:io' as io;
import 'package:janzer/database_model.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
class DBHelper {
static Database db_instance;
final String TABLE_NAME = "DatabaseModel";
Future<Database> get db async {
if (db_instance == null) db_instance = await initDB();
return db_instance;
}
initDB() async {
io.Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, "maps_database.db");
var db = await openDatabase(path, version: 3, onCreate: onCreateFunc);
return db;
}
void onCreateFunc(Database db, int version) async {
await db.execute('CREATE TABLE $TABLE_NAME'
'(id INTEGER PRIMARY KEY,'
'realTime TEXT, '
'moduleDate TEXT, '
'moduleTime TEXT, '
'moduleDay TEXT, '
'gpsCoordinates TEXT, '
'gpsSatellites TEXT, '
'gpsTime TEXT, '
'gpsDate TEXT, '
'temperature TEXT, '
'pressure TEXT, '
'humidity TEXT, '
'dust TEXT, '
'zivert TEXT )');
}
//getData
Future<List<DatabaseModel>> getContacts() async {
var db_connection = await db;
List<Map> list = await db_connection.rawQuery('SELECT * FROM $TABLE_NAME');
List<DatabaseModel> databaseModelS = new List();
for (int i = 0; i < list.length; i++) {
DatabaseModel databaseModel = new DatabaseModel();
databaseModel.id = list[i]['id'];
databaseModel.realTime = list[i]['realTime'];
databaseModel.moduleDate = list[i]['moduleDate'];
databaseModel.moduleTime = list[i]['moduleTime'];
databaseModel.moduleDay = list[i]['moduleDay'];
databaseModel.gpsCoordinates = list[i]['systemTime'];
databaseModel.gpsSatellites = list[i]['gpsSatellites'];
databaseModel.gpsTime = list[i]['gpsTime'];
databaseModel.gpsDate = list[i]['gpsDate'];
databaseModel.temperature = list[i]['temperature'];
databaseModel.pressure = list[i]['pressure'];
databaseModel.humidity = list[i]['humidity'];
databaseModel.dust = list[i]['dust'];
databaseModel.sievert = list[i]['zivert'];
databaseModelS.add(databaseModel);
}
return databaseModelS;
}
void addNewContact(DatabaseModel databaseModel) async {
var db_connection = await db;
String query = 'INSERT INTO '
'$TABLE_NAME(realTime, '
'moduleDate, '
'moduleTime, '
'moduleDay, '
'gpsCoordinates, '
'gpsSatellites, '
'gpsTime, '
'gpsDate, '
'temperature, '
'temperature, '
'pressure, '
'dust, '
'zivert) '
'VALUES( \'${databaseModel.realTime}\','
'\'${databaseModel.moduleDate}\', '
'\'${databaseModel.moduleTime}\','
'\'${databaseModel.moduleDay}\','
'\'${databaseModel.gpsCoordinates}\', '
'\'${databaseModel.gpsSatellites}\','
'\'${databaseModel.gpsTime}\','
'\'${databaseModel.gpsDate}\','
'\'${databaseModel.temperature}\', '
'\'${databaseModel.pressure}\', '
'\'${databaseModel.humidity}\','
'\'${databaseModel.dust}\','
'\'${databaseModel.sievert}\')';
await db_connection.transaction((transition) async {
return await transition.rawInsert(query);
});
}
void updateContact(DatabaseModel databaseModel) async {
var db_connection = await db;
String query =
'UPDATE $TABLE_NAME SET name ='
'\'${databaseModel.realTime}\','
'\'${databaseModel.moduleDate}\', '
'\'${databaseModel.moduleTime}\','
'\'${databaseModel.moduleDay}\','
'\'${databaseModel.gpsCoordinates}\', '
'\'${databaseModel.gpsSatellites}\','
'\'${databaseModel.gpsTime}\','
'\'${databaseModel.gpsDate}\','
'\'${databaseModel.temperature}\', '
'\'${databaseModel.pressure}\', '
'\'${databaseModel.humidity}\','
'\'${databaseModel.dust}\','
'\'${databaseModel.sievert}\' WHERE id = ${databaseModel.id}';
await db_connection.transaction((transition) async {
return await transition.rawQuery(query);
});
}
void deleteContact(DatabaseModel databaseModel) async {
var db_connection = await db;
String query = 'DELETE FROM $TABLE_NAME WHERE id = ${databaseModel.id}';
await db_connection.transaction((transition) async {
return await transition.rawQuery(query);
});
}
}
型号类代码
class DatabaseModel {
DatabaseModel();
String realTime,
moduleDate,
moduleTime,
moduleDay,
gpsCoordinates,
gpsSatellites,
gpsTime,
gpsDate,
temperature,
pressure,
humidity,
dust,
countDB,
sievert;
int id;
}
没有检查,但是像这样: