问题场景:
C# 使用SQLite的接口创建db文件并连接文件,结束之后调用close接口,并删除db文件,发现无法删除。
告警信息为:
操作无法完成,已经在XXX中打开。
根据二分比较的结果,连接db时使用的语句为:
ConnectionString = "Data Source = " + path + ";Pooling=true;FailIfMissing=false;Journal Mode=WAL;synchronous =OFF;journal_size_limit = 67110000";
其中Pooling这个参数删除之后,就可以在连接断连后删除db,对于Pooling的解释,参考:
也就是可以理解为,使用Pooling参数后,即便调用了close接口,其实际连接也在池中未释放等待后续调用,因此无法删除文件。
待续:在经过实际的写入行为后,即便开始不使用Pooling连接,并使用close,并把SQLiteFactory相关的变量 DbCommand, DbTransaction内容调用Dispose,仍然存在无法删除问题。