#sql #sqlite #flutter #sqflite
Вопрос:
Как и при любой операции с базой данных в sqflite , операция вставки также будет асинхронной функцией, и она вернет будущее типа int, так как метод вставки вернет идентификатор вставленной записи, но в моем случае он не возвращает идентификатор записи, он возвращает что-то вроде этого (Instance of 'Future<int>')
. Я хочу напечатать фактическое числовое значение идентификатора моей записи.
Это мой код для вставки данных:
Future<int> insert_into_Account(Account account) async {
int id = await db.insert(
'account',
account.toMapAccount(),
conflictAlgorithm: ConflictAlgorithm.replace,
);
return id;
}
// print data
Future testDb() async {
db = await openDb();
var id = insert_into_Account(Account(
name: 'maliha',
adress: 'eeee',
balance: 123,
issueDate: '333',
telphone: 'ddd',
type: 'eee',
));
List lists = await db.rawQuery('select * from account');
print(lists[0].toString());
print(id.toString());
}
и результат таков:
I/flutter (11306): {accountNumber: 5, name: maliha, telphone: ddd, address: eeee, issueDate: 333, balance: 123, image: null, type: eee}
I/flutter (11306): Instance of 'Future<int>'
Ответ №1:
insert_into_Account
Возврат Future<int>
. Чтобы получить идентификатор, добавьте await
спереди:
var id = await insert_into_Account(Account(
name: 'maliha',
adress: 'eeee',
balance: 123,
issueDate: '333',
telphone: 'ddd',
type: 'eee',
));