首页 > 解决方案 > 使用颤振将数据插入到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]);
});
}
 }

标签: sqliteflutter

解决方案


尝试这个:

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,
             )
        ''');
      },
    );
  }

推荐阅读