问题场景描述
使用Flutter的Sqlite执行多条SQL(execute multiple SQL)>10,这中间会进行原库与SQL比对,符合条件会进行关闭db.close,再new一个实例重新db初始化等,操作中报错如下:
1 |
Unhandled Exception: DatabaseException(error database_closed) |
问题分析
出现该错误的原因是:执行的是多条SQL语句需要一定的时间,所以使用了await异步,封闭了方法_executeMultiSQL进行指操作,指操作中使用了:
1 |
await db.execute(each); |
这么做的原因是操作十多条SQL需要时间,为了不影响后续操作,但错误也由此产生。
解决方法
一、将批量方法_executeMultiSQL的db.execute取消异步:
1 |
db.execute(each);//删除await |
二、
在条件检查中,关闭db.close时,将db设为null
1 2 3 |
// db换成你的实例名 db = null; db.close; |
reload看下,问题解决。
原文连接:解决Unhandled Exception: DatabaseException(error database_closed)
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。