データベース削除後に、"SqfliteDatabaseException (DatabaseException(database_closed))"とエラーが発生してしまう。

dart

1//db_manager.dart2import 'package:intl/intl.dart';3import 'package:path/path.dart';4import 'package:path_provider/path_provider.dart';5import 'package:sqflite/sqflite.dart';6 7const String columnId = '_id';8const String columnTitle = 'title';9const String columnSubTitle = 'subTitle';10const String columnIconPass = 'iconPass';11const String columnStatus = 'status';12const String columnMemo = 'memo';13const String columnCreatedAt = 'createdAt';14 15const List<String> columns = [16 columnId,17 columnTitle,18 columnSubTitle,19 columnIconPass,20 columnStatus,21 columnMemo,22 columnCreatedAt,23];24 25class DbHelper {26 DbHelper._createInstance();27 static DbHelper instance =28 DbHelper._createInstance();29 static Database? _database;30 31 Future<Database> get database async {32 return _database ??= await _initDB();33 }34 35 Future<Database> _initDB() async {36 final dbDirectory = await getApplicationSupportDirectory();37 final dbFilePath = dbDirectory.path;38 String path = join(await dbFilePath, 'cards.db');39 return await openDatabase(40 path,41 version: 1,42 onCreate: _onCreate,43 );44 }45 46 void deleteDB() async{47 final dbDirectory = await getApplicationSupportDirectory();48 final dbFilePath = dbDirectory.path;49 String path = join(await dbFilePath, 'cards.db');50 await deleteDatabase(path);51 }52 53 Future _onCreate(Database database, int version) async {54 await database.execute(''' 55 CREATE TABLE icons( 56 _id INTEGER PRIMARY KEY AUTOINCREMENT, 57 title TEXT, 58 subTitle TEXT, 59 iconPass TEXT, 60 status INTEGER, 61 memo TEXT, 62 createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 63 ) 64 ''');65 }66 67 Future<List<IconList>> selectAllIcons() async {68 final db = await instance.database;69 final iconListData = await db.query('icons');70 71 return iconListData 72 .map((json) => IconList.fromJson(json))73 .toList();74 }75 76 Future insert(IconList iconList) async {77 final db = await database;78 return await db.insert(79 'icons',//tablename80 iconList.toJson()81 );82 }83 Future insertRows(List<IconList> rows) async{84 final db = await database;85 Batch batch = db.batch();86 rows.forEach((row) => batch.insert('icons', row.toJson()));87 await batch.commit(noResult: true);88 }89}90 91class IconList {92 final int? id;93 final String title;94 final String? subTitle;95 final String iconPass;96 final int status;97 final String memo;98 DateTime createdAt;99 100 IconList(101 {102 this.id,103 required this.title,104 this.subTitle,105 required this.iconPass,106 required this.status,107 required this.memo,108 required this.createdAt 109 });110 111 IconList copy({112 int? id,113 String? title,114 String? subTitle,115 String? iconPass,116 int? status,117 String? memo,118 DateTime? createdAt,119 }) =>120 IconList(121 id: id ?? this.id,122 title:title ?? this.title,123 subTitle: subTitle ?? this.subTitle,124 iconPass: iconPass ?? this.iconPass,125 status: status ?? this.status,126 memo: memo ?? this.memo,127 createdAt: createdAt ?? this.createdAt,128 );129 130 static IconList fromJson(Map<String, Object?> json) => IconList(131 id: json[columnId] as int,132 title: json[columnTitle] as String,133 subTitle: json[columnSubTitle] as String?,134 iconPass: json[columnIconPass] as String,135 status: json[columnStatus] as int,136 memo: json[columnMemo] as String,137 createdAt: DateTime.parse(json[columnCreatedAt] as String),138 );139 140 Map<String, Object?> toJson() => {141 // columnId:id,142 columnTitle:title,143 columnSubTitle:subTitle,144 columnIconPass: iconPass,145 columnStatus: status,146 columnMemo: memo,147 columnCreatedAt: DateFormat('yyyy-MM-dd HH:mm:ss').format(createdAt),148 };149}150

コメントを投稿

0 コメント