sqlite - 使用颤振将数据插入到sqllite
问题描述
在创建数据(日期和时间)并将其插入 sqllite 表时遇到问题。就像每当用户单击按钮时,我希望它被添加到数据库并显示在主页中。我收到以下错误。请帮助`
import 'package:sqflite/sqflite.dart';
import 'package:sqflite/sql.dart';
import 'package:path/path.dart';
final String tableName = "todo";
final String Column_id = "id";
final String Column_Month = "month";
class TaskModel {
final String month;
int id;
TaskModel({this.month, this.id});
Map<String, dynamic> tomap() {
return {Column_Month: this.month};
}
}
class TodoHelper {
Database db;
TodoHelper() {
initDatabase();
}
Future<void> initDatabase() async {
db = await openDatabase(join(await getDatabasesPath(), "my_database.db"),
onCreate: (db, version) {
return db.execute(
"CREATE TABLE $tableName($Column_id INTEGER PRIMARY KEY AUTOINCREMENT,$Column_Month TEXT)");
}, version: 1);
}
Future<void> insertTask(TaskModel task) async {
try {
db.insert(tableName, task.tomap(),
conflictAlgorithm: ConflictAlgorithm.replace);
} catch (_) {
print(_);
}
}
Future<List<TaskModel>> getAllTask() async {
final List<Map<String, dynamic>> tasks = await db.query(tableName);
List.generate(tasks.length, (index) {
TaskModel(month: tasks[index][Column_Month], id: tasks[index][Column_id]);
});
}
}
解决方案
尝试这个:
Future initDatabase() async {
db = await openDatabase(
join(await getDatabasesPath(), 'my_database.db'),
version: 1,
onCreate: (Database db, int version) async {
db.execute('''
create table $tableName(
$Column_id integer primary key autoincrement,
$Column_Month text,
)
''');
},
);
}
推荐阅读
- reactjs - 如何更改 create-react-app 中的基本 url?
- amazon-ami - 在本地环境中存储 Packer 烘焙图像
- c# - 并行循环中的静态与实例在内存和性能方面更好
- python - 在数据框中创建一个新列,从现有的 dd/mm/yy 列显示星期几?Python
- postgresql - 子查询中的列总和产生奇怪的结果
- sum - 按元素分组并求和 XSLT
- java - 设置复选框的限制
- c++ - 拥有一个不需要创建对象的类是不好的做法吗?
- flutter - 宽度超过时 Flutter TextFormField 文本裁剪
- c# - 无法在 GetAwaiter().GetResult() 上将类型“void”隐式转换为“object”