解决Unhandled Exception: DatabaseException(error database_closed)

问题场景描述

使用Flutter的Sqlite执行多条SQL(execute multiple SQL)>10,这中间会进行原库与SQL比对,符合条件会进行关闭db.close,再new一个实例重新db初始化等,操作中报错如下:

Unhandled Exception: DatabaseException(error database_closed)

问题分析

出现该错误的原因是:执行的是多条SQL语句需要一定的时间,所以使用了await异步,封闭了方法_executeMultiSQL进行指操作,指操作中使用了:

await db.execute(each);

这么做的原因是操作十多条SQL需要时间,为了不影响后续操作,但错误也由此产生。

解决方法

一、将批量方法_executeMultiSQL的db.execute取消异步:

db.execute(each);//删除await

二、

在条件检查中,关闭db.close时,将db设为null

// db换成你的实例名
db = null;
db.close;

reload看下,问题解决。